0%

FastAPI自学教程(33) - 全局依赖项

1.全局依赖核心概念

1
2
3
from fastapi import Depends, FastAPI

app = FastAPI(dependencies=[Depends(verify_token)])
  • 通过FastAPIAPIRouterdependencies参数设置
  • 适用于所有路由的通用验证(如身份认证)
  • 支持同步/异步依赖项混合使用

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身份验证
  • 请求日志记录
  • 数据库连接池管理
  • 速率限制控制
  • 跨域请求处理
  • 响应头统一设置

注意:全局依赖会为每个请求执行,需避免在依赖中实现高耗时操作