FastAPI 入门教程 FastAPI教程 响应 Cookie

2024-02-25 开发教程 FastAPI 入门教程 匿名 5

使用Response参数

您可以Response在路径操作函数中声明类型参数。

然后您可以在该时间响应对象中设置 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"}

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

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

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

您还可以Response在依赖项中声明参数,并在其中设置 cookie(和标头)。

Response直接返回一个

您还可以在Response直接在代码中返回 a 时创建 cookie 。

为此,您可以按照直接返回响应中的说明创建响应

然后在里面设置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

提示

请记住,如果您直接返回响应而不是使用Response参数,FastAPI 将直接返回它。

因此,您必须确保您的数据类型正确。例如,它与 JSON 兼容,如果您返回JSONResponse.

而且您没有发送任何应该由response_model.

更多信息

技术细节

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

FastAPI提供相同starlette.responses的fastapi.responses,就像为你的方便,开发人员。但大多数可用的响应直接来自 Starlette。

由于Response可以经常用于设置标头和 cookie,FastAPI也在fastapi.Response.

要查看所有可用的参数和选项,请查看Starlette 中文档