Pydantic 请求体
GET 接口通常用路径参数和查询参数。
POST、PUT、PATCH 通常需要接收 JSON 请求体,这时就用 Pydantic 模型。
一、最简单的请求体
发送 JSON:
FastAPI 会自动做三件事:
- 读取请求体 JSON。
- 用
UserCreate校验数据。 - 把校验后的数据传给
user参数。
如果 age 传 "abc",会自动返回 422 错误。
二、必填、默认值、可选字段
字段规则:
注意这个容易踩坑的写法:
它表示:name 必须传,但值可以是字符串或 null。
如果想让它可以不传,要写:
三、使用 Field 添加校验
常用参数:
Field() 不只会校验数据,也会影响 /docs 里显示的字段说明。
四、把模型转成字典
Pydantic v2 使用 model_dump()。
输出:
常见用法:
五、创建和更新要分开写模型
创建用户时,用户名和密码通常必填。
更新用户时,用户可能只改昵称,不改密码。
所以不要一个模型到处用,建议分开:
更新时配合 exclude_unset=True:
如果前端只传:
update_data 只有:
不会把没传的 password 更新成 None。
六、嵌套模型
请求体可以嵌套。
发送 JSON:
default_factory=list 表示每次创建模型时都生成一个新的空列表。对初学者来说,这比直接写 tags: list[str] = [] 更清晰,也更不容易和普通 Python 的可变默认值规则混淆。
七、自定义字段校验
内置校验不够时,用 @field_validator。
如果校验失败,FastAPI 会把错误信息整理成 422 响应。
八、请求体、路径参数、查询参数一起用
FastAPI 会自动判断:

