如何在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
相关产品推荐
相关产品推荐

