1. 基础多级依赖
1 | from fastapi import Depends, FastAPI |
- 依赖项可嵌套形成树状结构,
query_or_body_extractor依赖query_extractor - 请求流程:
graph TD A[客户端请求] --> B[执行query_extractor] B --> C[执行query_or_body_extractor] C --> D[执行create_item]
2. 类型化依赖链
1 | from pydantic import BaseModel |
- 类型系统自动执行三项核心功能:
- 请求解析:从Header提取Authorization字段
- 数据验证:验证JWT格式有效性
- 错误处理:自动生成401/403错误响应
- 依赖链:
get_token → get_current_user → user_profile
3. 缓存机制
1 | class Counter: |
- 同一请求中相同依赖项会被缓存复用(输出示例:
{"a":1,"b":1}) - 使用
use_cache=False禁用缓存:1
Depends(get_counter, use_cache=False)
4. 复杂依赖树
1 | def db_conn(): |
- 依赖树结构:
graph TD db_conn --> audit_log db_conn --> security_check audit_log --> security_check security_check --> admin_panel
- 执行顺序:
db_conn → audit_log → security_check
5. 生产实践建议
- 依赖隔离:业务逻辑依赖与基础设施依赖分层管理
- 性能监控:复杂依赖树需关注执行耗时
- 测试策略:使用
FastAPI.TestClient模拟依赖项 - 错误追踪:为依赖项添加请求ID关联日志