Val*_*ang 6 python-3.x fastapi
我正在尝试更改 api 代码中的请求标头。现在它与 fastapi starlette 的 oob 是不可变的。我如何更改它以便我的请求标头是可变的?我想添加、删除和删除请求标头。我尝试实例化一个新请求并使用直接修改请求
\nrequest.headers["authorization"] = "XXXXXX"\nRun Code Online (Sandbox Code Playgroud)\n但我收到以下错误
\nTypeError: \xe2\x80\x98Headers\xe2\x80\x99 object does not support item assignment\nRun Code Online (Sandbox Code Playgroud)\n谢谢!
\nHim*_*Das 11
我假设您想对中间件中的标头执行某些操作。因为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 {}
Run Code Online (Sandbox Code Playgroud)
现在您应该在 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'})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6491 次 |
| 最近记录: |