1.全局依赖核心概念
1 2 3
| from fastapi import Depends, FastAPI
app = FastAPI(dependencies=[Depends(verify_token)])
|
- 通过
FastAPI或APIRouter的dependencies参数设置
- 适用于所有路由的通用验证(如身份认证)
- 支持同步/异步依赖项混合使用
2.应用级依赖配置
1 2 3 4
| async def common_params(q: str = None, skip: int = 0): return {"q": q, "skip": skip}
app = FastAPI(dependencies=[Depends(common_params)])
|
- 影响所有路径操作
- 适合跨路由通用参数处理
- 自动注入返回的字典到请求处理函数
3.路由级依赖配置
1
| router = APIRouter(dependencies=[Depends(get_db)])
|
- 通过APIRouter实现模块化依赖
- 仅影响该路由组下的路径操作
- 支持分层依赖管理
4.依赖执行顺序
graph LR
A[应用级依赖] --> B[路由级依赖] --> C[路径装饰器依赖] --> D[路径操作函数]
- 执行顺序为:应用 → 路由 → 装饰器 → 处理函数
- 同级依赖按声明顺序执行
- 错误会终止后续依赖执行
5.混合依赖使用
1 2 3
| @app.get("/items/", dependencies=[Depends(log_request)]) async def read_items(): return [{"item": "Foo"}]
|
- 支持全局+局部依赖组合使用
- 局部依赖会追加到全局依赖之后
- 可通过
dependencies=[]覆盖全局设置
6.典型应用场景
- JWT身份验证
- 请求日志记录
- 数据库连接池管理
- 速率限制控制
- 跨域请求处理
- 响应头统一设置
注意:全局依赖会为每个请求执行,需避免在依赖中实现高耗时操作