python-3.x - 如何将我的 fastapi 请求标头操作为可变的
问题描述
我正在尝试在我的 api 代码中更改我的请求标头。它现在是不可变的,与 fastapi starlette 一起使用。我该如何更改它以使我的请求标头是可变的?我想添加、删除和删除请求标头。我试图实例化一个新请求并使用直接修改请求
request.headers["authorization"] = "XXXXXX"
但我收到以下错误
TypeError: ‘Headers’ object does not support item assignment
谢谢。
解决方案
我假设您想对中间件中的标头做一些事情。因为 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
print(request.headers)
return {}
现在您应该在 request.headers 对象的打印输出中看到“xxxxx”:
MutableHeaders({'host': '127.0.0.1:8001', 'user-agent': 'insomnia/2021.5.3', 'content-type': 'application/json', 'authorization': '', 'accept': '*/*', 'content-length': '633', 'xxxxx': 'XXXXX'})
推荐阅读
- excel - 具有 Range.Autofilter 的数组不起作用
- r - lapply to left_join 数据集列表
- c++ - 如何使用vscode c++调试器通过gdb将参数传递给程序?
- regex - 如何在正则表达式中更改该字符串
- android - firebase ml kit人脸检测,没有人脸时画矩形,为什么?
- javascript - 具有多个值的字段上的 AG-grid 企业分组
- string - 如何选择大于
- pandas - Pandas 在索引级别内重新采样频率
- python - 创建一个具有连续秒数的数组 - strptime - KeyError : 0
- angular - 关于可观察的最佳实践