1. 模型化声明Header参数
1 | from typing import Annotated |
- 支持使用Pydantic模型批量管理多个Header参数(FastAPI 0.115.0+特性)
- 自动提取请求头字段并进行数据验证与类型转换
- 模型可复用,适用于需要统一校验规则的接口场景
2. 多版本兼容写法
1 | # Python 3.8+兼容写法 |
- 推荐优先使用
Annotated注解方式(Python 3.10+) - 旧版本需使用
Union类型声明可选参数 - 支持同时定义默认值和字段校验规则
3. 禁止额外Headers配置
1 | class StrictHeaders(BaseModel): |
- 通过
model_config = {"extra": "forbid"}限制未声明Header - 客户端发送未定义Header时返回422错误(如
x-unexpected) - 适用于需要严格安全管控的接口场景
4. 注意事项
- 字段转换:默认将参数名的下划线
_转换为连字符-(如user_agent→User-Agent) - 文档交互:Swagger UI自动生成Header参数说明,但需手动发送测试请求
- 验证优先级:模型字段校验规则会覆盖Header参数的基础验证逻辑
- 大小写处理:HTTP headers不区分大小写,可用Python的snake_case风格声明