当前位置:   article > 正文

python系列:FASTAPI系列 17-设置响应参数Cookies & FASTAPI系列 18-设置响应参数头部_fastapi python 设置响应的header

fastapi python 设置响应的header




一、 FASTAPI系列 17-设置响应参数Cookies

前言

可以在路径函数中定义一个类型为Response的参数,这样你就可以在这个临时响应对象中设置cookie了。

一、response 参数

设置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"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

还可以根据你的需要响应不同的对象,比如常用的 dict,数据库model等。如果定义了response_model,程序会自动根据response_model来过滤和转换你响应的对象。FastAPI 会使用这个临时响应对象去装在这些cookies信息 (同样还有headers和状态码等信息), 最终会将这些信息和通过response_model转化过的数据合并到最终的响应里。你也可以在depend中定义Response参数,并设置cookieheader

二、直接响应 Response

还可以在直接响应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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

总结

需要注意,如果你直接反馈一个response对象,而不是使用Response入参,FastAPI则会直接反馈你封装的response对象。所以你需要确保你响应数据类型的正确性,如:你可以使用JSONResponse来兼容JSON的场景。同时,你也应当仅反馈通过response_model过滤过的数据。

二、 FASTAPI系列 18-设置响应参数头部

前言

可以在_路径操作函数_中声明一个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!"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这里,我们定义了一个名为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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

你也可以使用from starlette.responses import Responsefrom starlette.responses import JSONResponse
FastAPI提供了与fastapi.responses相同的starlette.responses,只是为了方便开发者。

总结

大多数可用的响应都直接来自Starlette。由于Response经常用于设置头部和cookies,因此FastAPI还在fastapi.Response中提供了它。







lzq599220

FASTAPI系列 17-设置响应参数Cookies

FASTAPI系列 18-设置响应参数头部

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号