使用response_model_exclude_unset参数 你可以设置_路径操作装饰器_的response_model_exclude_unset=True参数: @app.get("/items/{item_id}", response_model=Item, response_model_exclude_unset=True)asyncdefread_item(item_id:str):returnitems[item_id] 然后响应中将不会包含那些默认值,而是仅有实际设置的值。
在FastAPI 中,除了response_model_exclude_unset参数外,还有两个类似的参数:response_model_exclude_defaults和response_model_exclude_none。这两个参数可以帮助你控制在响应数据中排除哪些字段。它们分别用于排除具有默认值和None值的字段。 1.response_model_exclude_defaults response_model_exclude_defaults参数决定是否排...
本篇文章详细介绍了如何在 FastAPI 中使用响应模型,包括在路径操作函数中声明 response_model、处理请求与响应数据不同时的场景,以及通过参数如 response_model_exclude_unset 来优化响应数据。文中还探讨了如何使用 response_model_include 和response_model_exclude 参数动态控制响应字段的显示,帮助开发者轻松精简响应内容。
name:strdescription:Optional[str] =Noneprice:floattax:Optional[float] =Nonetagg:List[str] = []@app.post("/items/", response_model=Item, response_model_exclude_unset=True)asyncdefcreate_item(item: Item):returnitem response_model_exclude_unset=True是仅返回显式设定的值,意思就是你请求传几个参...
response_model_exclude_unset=True 实际代码 代码语言:javascript 复制 classItem(BaseModel):name:strprice:float # 下面三个字段有默认值description:Optional[str]=Nonetax:float=10.5tags:List[str]=[]items={"foo":{"name":"Foo","price":50.2},"bar":{"name":"Bar","description":"The bartenders",...
忽略未设置的参数 response_model_exclude_nset 代码语言:javascript 复制 # 响应未经参数设置的参数 response_model_exclude_nset=True @app06.get("/stu06/response_exclude_unset",response_model=userOut,response_model_exclude_unset=True)defstu06_response_item_exclude_unset(username:str=Query("name1"))...
response_model_exclude_unset: bool = False, response_model_exclude_defaults: bool = False, response_model_exclude_none: bool = False, include_in_schema: bool = True, response_class: Type[Response] = Default(JSONResponse), name: Optional[str] = None, ...
在以上情况下,如果实际数据值与默认值相同,那么FastAPI仍然会输出,也就是说,当设置response_model_exclude_unset=True时,其输出是按照实际值输出的。下面将代码{'id': 'p2', 'name': '百合花', 'price': 12.8}中的price字段值修改为10.0,然后执行请求: ...
在以上情况下,如果实际数据值与默认值相同,那么FastAPI仍然会输出,也就是说,当设置response_model_exclude_unset=True时,其输出是按照实际值输出的。下面将代码{'id': 'p2', 'name': '百合花', 'price': 12.8}中的price字段值修改为10.0,然后执行请求:从上面的执行结果可以看出:虽然实际...
response_model_exclude_unset 看意思就是去掉一个没有设置值的参数,那我们看看他的效果。 @app.post("/user/login",response_model=UserOut)asyncdefcreate_user(user:UserIn)->Any:username=user.usernamereturnusers[username] 此时我们设置这个参数,然后username我们输入a001,看看现在的效果: ...