Fast API 基础用法
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建基于 Python 3.7+ 的 API,使用标准的 Python 类型提示。它基于 Starlette(用于 web 框架的核心功能)和 Pydantic(用于数据验证)。
🚀 FastAPI 简介
- 快速:性能媲美 NodeJS 和 Go,得益于 Starlette 和 Pydantic。
 - 高效开发:减少约 40% 的 bug,代码自动补全,强类型提示。
 - 自动文档:基于 OpenAPI 自动生成交互式 API 文档。
 - 原生支持异步编程:支持 
async/await。 
✨ 快速开始
🔧 安装与初始化
# 推荐使用虚拟环境
python -m venv env
source env/bin/activate  # Windows: env\Scripts\activate
# 安装 FastAPI 和 Uvicorn 作为 ASGI 服务器
pip install fastapi uvicorn
### 创建一个最简单的 FastAPI 应用
```python
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "World"}
启动服务器
uvicorn main:app --reload
自动生成文档:
- Swagger UI: http://127.0.0.1:8000/docs
 - ReDoc: http://127.0.0.1:8000/redoc
 
FastAPI vs Flask 对比
| 特性 | FastAPI | Flask | 
|---|---|---|
| 🧠 类型支持 | ✅ 支持 Python 类型提示,自动校验请求参数 | ❌ 需使用其他工 具(如 marshmallow)手动实现 | 
| 📄 自动文档生成 | ✅ 自动生成 Swagger 和 ReDoc 文档 | ❌ 需手动集成 Flask-RESTPlus 等 | 
| ⚙️ 异步支持 | ✅ 原生 async/await 支持,适合高并发 | ⚠️ 原生不支持,需搭配额外依赖或异步服务器 | 
| 🔐 请求体校验 | ✅ 使用 Pydantic 自动解析并验证请求体 | ❌ 需要手动编写验证逻辑或借助第三方包 | 
| 🏎 性能基准 | ⚡ 非常高(与 Node.js、Go 接近) | ⛽️ 普通,适合中小型项目 | 
| 📈 学习曲线 | ⬆️ 稍高,需要了解类型提示与异步 | ⬇️ 低,上手快,文档和社区资源丰富 | 
| 📦 路由结构与模块划分 | ✅ 支持 APIRouter 模块化、依赖注入更灵活 | ❌ 路由结构较扁平,复杂项目中模块化不如 FastAPI 自然 | 
| 📚 文档体验 | ✅ http://localhost:8000/docs 自动提供 Swagger UI | ❌ 需手动添加扩展插件 | 
| """ | 
🔄 请求方法示例
- GET 请求
 - POST 请求
 
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
from pydantic import BaseModel
class Item(BaseModel):
    name: str
    price: float
@app.post("/items/")
def create_item(item: Item):
    return item
📦 使用依赖注入(Dependency Injection)
from fastapi import Depends
def common_parameters(q: str = None):
    return {"q": q}
@app.get("/search/")
def search(params: dict = Depends(common_parameters)):
    return params
tip
FastAPI 的依赖注入功能强大且可组合,非常适合大型项目。
⚙️ 数据验证与类型提示
from pydantic import BaseModel, Field
class User(BaseModel):
    username: str = Field(..., max_length=50)
    age: int = Field(..., gt=0)
@app.post("/users/")
def create_user(user: User):
    return user
🔐 自动生成 API 文档
无需额外配置,FastAPI 内置支持:
- OpenAPI (Swagger UI)
 - ReDoc
 
访问 /docs 或 /redoc 即可查看交互式文档。
📁 示例项目结构
myapp/
├── main.py
├── routers/
│   ├── user.py
│   └── item.py
├── models/
├── services/
├── config.py
📚 总结
- FastAPI 是构建现代 RESTful API 的利器
 - 拥有强大的异步支持、类型校验、文档自动生成能力
 - 适用于微服务架构、数据密集型服务等中大型项目