codecamp

FastAPI教程 响应 - 更改状态代码

您可能之前阅读过,您可以设置默认的Response Status Code

但在某些情况下,您需要返回与默认值不同的状态代码。

用例

例如,假设您希望200默认返回“OK”的 HTTP 状态代码。

但是如果数据不存在,你想创建它,并返回一个 HTTP 状态代码 "CREATED" 201。

但是您仍然希望能够过滤和转换您使用response_model.

对于这些情况,您可以使用Response参数。

使用Response参数

您可以Response在路径操作函数中声明一个 type 参数(就像对 cookie 和 headers 所做的那样)。

然后您可以status_code在该时间响应对象中设置 。

from fastapi import FastAPI, Response, status

app = 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_CREATED
    return tasks[task_id]

然后您可以像往常一样返回您需要的任何对象(a dict、数据库模型等)。

如果您声明了 a response_model,它仍将用于过滤和转换您返回的对象。

FastAPI将使用该临时响应来提取状态代码(还有 cookie 和标头),并将它们放入包含您返回的值的最终响应中,由 any 过滤response_model。

您也可以Response在依赖项中声明参数,并在其中设置状态码。但请记住,最后一个设置将获胜。


FastAPI教程 响应头
FastAPI教程 高级依赖
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

FastAPI 用户指南

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }