Python -如何操作FastAPI请求头变得可变?[副本]

qoefvg9y  于 12个月前  发布在  Python
关注(0)|答案(1)|浏览(99)

此问题在此处已有答案

How to update/modify request headers and query parameters in a FastAPI middleware?(1个答案)
三个月前关门了。
我正在尝试更改我的API代码中的请求头。它的不可改变的权利,现在oob与fastapi星彩。我怎样才能改变它,使我的请求头是可变的?我想添加、删除和删除请求标头。我尝试示例化一个新请求,并使用

request.headers["authorization"] = "XXXXXX"

字符串
但我得到以下错误

TypeError: ‘Headers’ object does not support item assignment


谢谢你,谢谢

m3eecexj

m3eecexj1#

我假设您想在中间件中对头文件做些什么。因为FastAPI在下面是Starlette,Starlette有一个数据结构,可以修改头部。您可以使用原始头值示例化MutableHeaders,修改它,然后将request._headers设置为新的可变头。下面是一个例子:

from starlette.datastructures import MutableHeaders
from fastapi import Request    

@router.get("/test")
def test(request: Request):
     new_header = MutableHeaders(request._headers)
     new_header["xxxxx"]="XXXXX"
     request._headers = new_header
     request.scope.update(headers=request.headers.raw)
     print(request.headers)
     return {}

字符串
现在你应该会看到“xxxxx”在request.headers对象的打印输出中:

MutableHeaders({'host': '127.0.0.1:8001', 'user-agent': 'insomnia/2021.5.3', 'content-type': 'application/json', 'authorization': '', 'accept': '*/*', 'content-length': '633', 'xxxxx': 'XXXXX'})

相关问题