1. 基础用法
1 | from fastapi import FastAPI |
- 非路径参数自动解析为查询参数(如
q) - 类型注解
str | None表示可选参数 - 默认值
= None使参数非必需
2. 使用 Annotated 验证
1 | from typing import Annotated |
- 通过
Annotated包装类型和验证元数据 Query(max_length=50)添加长度限制验证- 支持同时声明类型和验证规则
3. 多版本兼容写法
Python 3.8+ 兼容版本:
1 | from typing import Union |
- 使用
Union替代|操作符 - 旧版 FastAPI (<0.95.0) 需通过
Query()直接添加验证 - 推荐优先使用 Annotated 版本
4. 验证参数类型
1 |
|
- 支持多种验证约束:
min_length/max_length:字符串长度限制pattern:正则表达式验证gt/ge/lt/le:数值范围验证
5. 自动文档支持
- 交互式文档
/docs自动显示:- 参数默认值
- 验证规则说明
- 枚举值示例(如正则模式)
- 错误响应示例
- 无效输入自动生成描述性错误(HTTP 422)
6. 最佳实践
- 优先使用
Annotated声明方式(FastAPI ≥0.95.1) - 复杂验证使用正则表达式时保持模式简单
- 通过
Query()参数添加参数描述文档:1
Query(default=None, description="搜索关键词,最多50个字符")
- 不同版本兼容处理时保持验证逻辑一致