全书目录

第二篇:FastAPI 完全指南 —— 软件城市政务大厅宇宙

第六章:请求体 —— 真正的表单系统从这里开始

1 分钟 134 字 第 52 / 962 个阅读单元

路径参数和查询参数像门牌号、备注栏。 真正复杂的数据,通常放在请求体里。

FastAPI 官方推荐用 Pydantic BaseModel 来声明请求体:

py
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class PermitCreate(BaseModel):
    owner: str
    zone: str
    days: int
    note: str | None = None

@app.post("/permits/")
async def create_permit(data: PermitCreate):
    return {
        "message": "申请已受理",
        "owner": data.owner,
        "zone": data.zone,
        "days": data.days,
    }

这时候 FastAPI 会自动做几件事:

text
收到 JSON
   │
   ▼
按 PermitCreate 解析
   │
   ├── 类型转换
   ├── 数据校验
   ├── 错误定位
   └── 生成文档 Schema
   ▼
把合格数据作为 data 传给你

也就是说,data 不再是乱糟糟的 dict,而是一个结构明确的对象。