很多初学者会犯一个危险错误:
把内部对象原样返回给外部。
from fastapi import FastAPI, status
from pydantic import BaseModel
app = FastAPI()
class PermitCreate(BaseModel):
owner: str
zone: str
days: int
class PermitPublic(BaseModel):
id: int
owner: str
zone: str
days: int
status: str
class PermitInDB(PermitPublic):
internal_note: str
@app.post("/permits/", response_model=PermitPublic, status_code=status.HTTP_201_CREATED)
async def create_permit(data: PermitCreate):
permit = PermitInDB(
id=1,
owner=data.owner,
zone=data.zone,
days=data.days,
status="pending",
internal_note="风控等级:低",
)
return permitFastAPI 官方文档特别强调:响应模型会对输出做过滤。
你的内部对象
│
▼
response_model 过滤
│
▼
客户端最终看到的回执这不仅是文档问题,更是安全问题。