1. 可调用实例
1 | from fastapi import Depends, FastAPI |
- 通过实现类的
__call__方法创建可调用实例,使得类实例可作为依赖项注入路径操作函数 - 请求处理流程:
graph TD A[客户端请求] --> B[初始化FixedContentQueryChecker实例] B --> C[调用__call__方法校验参数] C --> D{校验结果} D -->|True| E[返回True] D -->|False| F[返回False] E & F --> G[响应结果]
2. 参数化实例
1 | class ContentValidator: |
- 利用
__init__方法实现依赖项参数化,同一验证类可生成不同校验规则的实例 - 优势:
- 避免为不同参数阈值编写多个相似验证函数
- 支持动态配置校验规则(如从配置文件读取参数)
- 通过实例化参数实现业务规则复用
3. 全局依赖项配置
1 | async def security_check(api_key: str = Header(...)): |
- 在应用初始化时通过
dependencies参数声明全局依赖项,自动应用于所有路径操作 - 典型应用场景:
- 全站身份验证
- 请求日志记录
- 流量控制
- 请求头统一校验
测试命令示例:
1 curl -X GET "http://localhost:8000/query-checker/?q=bar"