跳到主要内容

⚡ FastAPI:现代高性能异步 Web 框架

FastAPI 是基于 Python 3.6+ 类型注解构建的高性能 Web 框架,适合构建 API 服务,支持异步、自动文档生成、依赖注入等。


✅ FastAPI 解决了什么问题?

问题FastAPI 的解决方式
开发 API 繁琐使用路径装饰器快速创建接口
文档编写难自动生成 Swagger 和 ReDoc
异步性能需求内建支持 async / await
参数校验复杂利用 Pydantic 自动校验和解析请求参数
类型提示与 IDE 支持不佳强类型注解,IDE 友好

🧰 安装 FastAPI 和 Uvicorn

pip install fastapi[all]

或者只安装核心依赖:

pip install fastapi
pip install "uvicorn[standard]"

🚀 快速启动一个接口服务

创建 main.py

fastapi 导入 FastAPI

app = FastAPI()

@app.get("/")
定义 根():
返回 {"消息": "你好 FastAPI"}

启动服务:

uvicorn main:app --reload

访问:


📥 路径参数与查询参数

@app.get("/用户/{用户id}")
定义 获取用户(用户id: int, 详细: bool = False):
如果 详细:
返回 {"用户id": 用户id, "详情": "详细信息"}
返回 {"用户id": 用户id}

📦 请求体(Body)与 Pydantic 模型

pydantic 导入 BaseModel

用户(BaseModel):
姓名: str
年龄: int

@app.post("/用户/")
定义 创建用户(用户: 用户):
返回 {"创建成功": 用户.姓名}

🧱 路由分离与模块化

创建 routers/user.py

fastapi 导入 APIRouter

路由 = APIRouter()

@路由.get("/列表")
定义 获取用户列表():
返回 [{"姓名": "小明"}, {"姓名": "小红"}]

注册子路由 main.py

fastapi 导入 FastAPI
routers 导入 user

app = FastAPI()
app.include_router(user.路由, prefix="/用户")

⚙️ 请求校验与默认值

FastAPI 自动对请求参数进行校验与默认处理:

fastapi 导入 Query

@app.get("/搜索/")
定义 搜索关键字(q: str = Query(..., min_length=2)):
返回 {"搜索": q}

🔐 用户认证(示例)

fastapi 导入 Depends, HTTPException
fastapi.security 导入 OAuth2PasswordBearer

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

定义 当前用户(token: str = Depends(oauth2_scheme)):
如果 token != "mysecrettoken":
抛出 HTTPException(状态码=401, 详情="无权限")
返回 {"用户名": "admin"}

🧪 自动文档与参数说明

访问:http://127.0.0.1:8000/docs 自动生成 Swagger UI。

@app.get("/项目/", tags=["项目"])
定义 获取项目(名称: str = "默认项目"):
"""获取指定项目"""
返回 {"项目": 名称}

📈 异步支持

FastAPI 原生支持异步请求:

asyncio 导入 sleep

@app.get("/延迟/")
异步 定义 模拟延迟():
等待 sleep(1)
返回 {"状态": "完成"}

🧰 常用命令与工具

工具说明
uvicorn启动 FastAPI 服务
pydantic定义数据模型,自动验证
requests调试接口的好搭档
/docsSwagger 文档界面
/redoc另一个自动文档界面