You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FastAPI文档中将输出模型字段标记为非必填?

FastAPI响应模型中full_name字段被标记为必填的问题解决

原因

你当前仅通过返回类型注解-> BaseUser指定响应模型,但FastAPI对返回类型注解的处理逻辑和专门的response_model参数存在差异。由于实际返回的是UserIn实例(BaseUser的子类),文档生成逻辑无法正确识别BaseUser中full_name字段的可选性(该字段带有None默认值),从而误将其标记为必填。

解决方法

按照FastAPI官方推荐的方式,在路由装饰器中使用response_model参数明确指定响应模型,替换仅依赖返回类型注解的写法:

from fastapi import FastAPI
from pydantic import BaseModel, EmailStr

app = FastAPI()

class BaseUser(BaseModel):
    username: str
    email: EmailStr
    full_name: str | None = None

class UserIn(BaseUser):
    password: str

@app.post("/user/", response_model=BaseUser)
async def create_user(user: UserIn):
    return user

修改后重启服务,访问http://127.0.0.1:8000/docs即可看到响应模型中的full_name字段已正确标记为非必填。

内容的提问来源于stack exchange,提问作者Christian Wenz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:37:27