读本章之前确认已经读过默认的状态码 Response Status Code
但是有一些情况下你需要返回一个不同的状态码

实例

例如,假设你想return一个200的状态码,但是如果数据不存在,你想去创建它,并且返回一个201CREATED的HTTP状态码。

但是你还想能通过response_model过滤和转换return的这份数据,
这种情况下,你需要使用Response参数

使用Response参数

你可以在你的路径操作函数中定义一个Response参数(就像添加cookies和headers那样)
然后,你就可以在临时的response对象中设置status_code

  1. from fastapi import FastAPI, Response, status
  2. app = FastAPI()
  3. tasks = {"foo": "Listen to the Bar Fighters"}
  4. @app.put("/get-or-create-task/{task_id}", status_code=200)
  5. def get_or_create_task(task_id: str, response: Response):
  6. if task_id not in tasks:
  7. tasks[task_id] = "This didn't exist before"
  8. response.status_code = status.HTTP_201_CREATED
  9. return tasks[task_id]

然后,你可以return任意的对象,例如(dict,数据库model等)
如果你定义了response_model,它将还被用于过滤和转换你return的对象

你也可以在dependencies中声明一个Response ,并且设置状态码,但是要记住,最后一个设置才会生效。