FastAPI教程 響應(yīng) Cookie

2021-11-08 09:52 更新

使用Response參數(shù)

您可以Response在路徑操作函數(shù)中聲明類型參數(shù)。

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

from fastapi import FastAPI, Response

app = FastAPI()


@app.post("/cookie-and-object/")
def create_cookie(response: Response):
    response.set_cookie(key="fakesession", value="fake-cookie-session-value")
    return {"message": "Come to the dark side, we have cookies"}

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

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

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

您還可以Response在依賴項(xiàng)中聲明參數(shù),并在其中設(shè)置 cookie(和標(biāo)頭)。

Response直接返回一個(gè)

您還可以在Response直接在代碼中返回 a 時(shí)創(chuàng)建 cookie 。

為此,您可以按照直接返回響應(yīng)中的說(shuō)明創(chuàng)建響應(yīng)。

然后在里面設(shè)置Cookies,然后返回:

from fastapi import FastAPI
from fastapi.responses import JSONResponse

app = FastAPI()


@app.post("/cookie/")
def create_cookie():
    content = {"message": "Come to the dark side, we have cookies"}
    response = JSONResponse(content=content)
    response.set_cookie(key="fakesession", value="fake-cookie-session-value")
    return response

提示

請(qǐng)記住,如果您直接返回響應(yīng)而不是使用Response參數(shù),F(xiàn)astAPI 將直接返回它。

因此,您必須確保您的數(shù)據(jù)類型正確。例如,它與 JSON 兼容,如果您返回JSONResponse.

而且您沒(méi)有發(fā)送任何應(yīng)該由response_model.

更多信息

技術(shù)細(xì)節(jié)

您也可以使用from starlette.responses import Response或from starlette.responses import JSONResponse。

FastAPI提供相同starlette.responses的fastapi.responses,就像為你的方便,開(kāi)發(fā)人員。但大多數(shù)可用的響應(yīng)直接來(lái)自 Starlette。

由于Response可以經(jīng)常用于設(shè)置標(biāo)頭和 cookie,F(xiàn)astAPI也在fastapi.Response.

要查看所有可用的參數(shù)和選項(xiàng),請(qǐng)查看Starlette 中文檔


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)