1. 基础声明方式
1 | from fastapi import FastAPI, Header |
- 使用
Header()声明参数,否则会被视为查询参数 - 参数名称需与请求头字段完全匹配(支持自动下划线转换机制)
- 推荐使用
Annotated类型注解方式,兼容性更好
2. 自动转换机制
1 |
|
- 默认将参数名的下划线
_转换为连字符-(如user_agent→User-Agent) - 可通过
convert_underscores=False禁用自动转换 - HTTP 头字段不区分大小写,可用 Python 的 snake_case 风格声明
3. 重复 Header 处理
1 |
|
- 使用
list类型接收多个相同名称的请求头值 - 示例请求头:
1
curl -H "X-Token: foo" -H "X-Token: bar" http://localhost:8000/batch/
- 响应结果将包含所有值:
{"tokens": ["foo", "bar"]}
4. 模型化处理
1 | class CommonHeaders(BaseModel): |
- 通过 Pydantic 模型批量管理多个 Header 参数
- 自动验证并转换请求头字段
- 支持复用模型定义,适用于标准化接口场景
5. 注意事项
- 技术细节:
Header继承自Param类,与Query/Path为兄弟类 - 特殊字符处理:避免在禁用下划线转换时使用非常规字段名
- 文档展示:Swagger UI 自动生成请求头参数说明
- 数据验证:支持与
Field结合进行参数校验(如长度限制)