FastAPI教程 響應(yīng) - 更改狀態(tài)代碼

2021-11-08 09:55 更新

您可能之前閱讀過(guò),您可以設(shè)置默認(rèn)的Response Status Code

但在某些情況下,您需要返回與默認(rèn)值不同的狀態(tài)代碼。

用例

例如,假設(shè)您希望200默認(rèn)返回“OK”的 HTTP 狀態(tài)代碼。

但是如果數(shù)據(jù)不存在,你想創(chuàng)建它,并返回一個(gè) HTTP 狀態(tài)代碼 "CREATED" 201。

但是您仍然希望能夠過(guò)濾和轉(zhuǎn)換您使用response_model.

對(duì)于這些情況,您可以使用Response參數(shù)。

使用Response參數(shù)

您可以Response在路徑操作函數(shù)中聲明一個(gè) type 參數(shù)(就像對(duì) cookie 和 headers 所做的那樣)。

然后您可以status_code在該時(shí)間響應(yīng)對(duì)象中設(shè)置 。

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]

然后您可以像往常一樣返回您需要的任何對(duì)象(a dict、數(shù)據(jù)庫(kù)模型等)。

如果您聲明了 a response_model,它仍將用于過(guò)濾和轉(zhuǎn)換您返回的對(duì)象。

FastAPI將使用該臨時(shí)響應(yīng)來(lái)提取狀態(tài)代碼(還有 cookie 和標(biāo)頭),并將它們放入包含您返回的值的最終響應(yīng)中,由 any 過(guò)濾response_model。

您也可以Response在依賴(lài)項(xiàng)中聲明參數(shù),并在其中設(shè)置狀態(tài)碼。但請(qǐng)記住,最后一個(gè)設(shè)置將獲勝。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)