赞
踩
可以在路径函数中定义一个类型为Response的参数
,这样你就可以在这个临时响应对象中设置cookie
了。
设置cookies
from fastapi import FastAPI, Response
app = FastAPI()
@app.post("/create_cookie/")
def create_cookie(response: Response):
response.set_cookie(key="userSessionId ", value="A3fH9qT1KmXZrLpYBcGJUw")
return {"message": "创建了一个cookie"}
还可以根据你的需要响应不同的对象,比如常用的 dict
,数据库model
等。如果定义了response_model
,程序会自动根据response_model
来过滤和转换你响应的对象。FastAPI
会使用这个临时响应对象去装在这些cookies信息
(同样还有headers和状态码等信息), 最终会将这些信息和通过response_model
转化过的数据合并到最终的响应里。你也可以在depend
中定义Response参数
,并设置cookie
和header
。
还可以在直接响应Response
时直接创建cookies
。然后设置Cookies
,并返回;
@app.post("/cookie/")
def create_cookie():
content = {"message": "创建了一个cookie"}
response = JSONResponse(content=content)
response.set_cookie(key="userSessionId", value="A3fH9qT1KmXZrLpYBcGJUw")
return response
需要注意,如果你直接反馈一个response对象
,而不是使用Response
入参,FastAPI
则会直接反馈你封装的response对象
。所以你需要确保你响应数据类型的正确性,如:你可以使用JSONResponse
来兼容JSON
的场景。同时,你也应当仅反馈通过response_model
过滤过的数据。
可以在_路径操作函数_中声明一个Response类型
的参数。
在这个_临时_响应对象中设置头部
from fastapi import FastAPI, Response
app = FastAPI()
def add_custom_header(response: Response):
response.headers["X-Custom-Header"] = "custom_value"
return response
@app.get("/some-endpoint")
@add_custom_header
async def some_endpoint():
return {"message": "Hello, world!"}
这里,我们定义了一个名为add_custom_header
的装饰器函数,它接受一个Response对象
作为参数,设置自定义头部后返回。然后,我们在some_endpoint路由处理函数
上应用此装饰器。
可以在直接返回Response
时添加头部
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/headers/")
def get_headers():
content = {"message": "Hello World"}
headers = {"X-Custom-Header": "custom_value", "Content-Language": "en-US"}
return JSONResponse(content=content, headers=headers)
你也可以使用from starlette.responses import Response
或from starlette.responses import JSONResponse
。
FastAPI
提供了与fastapi.responses
相同的starlette.responses
,只是为了方便开发者。
大多数可用的响应都直接来自Starlette
。由于Response
经常用于设置头部和cookies
,因此FastAPI
还在fastapi.Response
中提供了它。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。