读本章之前确认已经读过默认的状态码 Response Status Code
但是有一些情况下你需要返回一个不同的状态码
实例
例如,假设你想return一个200的状态码,但是如果数据不存在,你想去创建它,并且返回一个201CREATED的HTTP状态码。
但是你还想能通过response_model过滤和转换return的这份数据,
这种情况下,你需要使用Response参数
使用Response参数
你可以在你的路径操作函数中定义一个Response参数(就像添加cookies和headers那样)
然后,你就可以在临时的response对象中设置status_code
from fastapi import FastAPI, Response, statusapp = FastAPI()tasks = {"foo": "Listen to the Bar Fighters"}@app.put("/get-or-create-task/{task_id}", status_code=200)def get_or_create_task(task_id: str, response: Response):if task_id not in tasks:tasks[task_id] = "This didn't exist before"response.status_code = status.HTTP_201_CREATEDreturn tasks[task_id]
然后,你可以return任意的对象,例如(dict,数据库model等)
如果你定义了response_model,它将还被用于过滤和转换你return的对象
你也可以在dependencies中声明一个Response ,并且设置状态码,但是要记住,最后一个设置才会生效。
