python - FastAPI - 设置请求对象的 url 或路径
问题描述
我有一个看起来像这样的函数:
@app.middleware("http")
async def process_api_event(request: Request, call_next):
url = request.url
path = request.url.path
# request.__setattr__('url', 'sample_url')
# request.url.__ setattr__('path', 'sample_path')
在上面的函数中,我想根据情况改变请求的url,或者路径。我试过了request.__setattr__('url', 'sample_url')
,request.url.__ setattr__('path', 'sample_path')
如上所示,但由于AttributeError: can't set attribute error
. 我通读了 FastAPI 和 Starlette 文档,但在这种情况下找不到我需要的信息。任何帮助将不胜感激!
解决方案
request.url
是一个获取属性的属性,_url
所以你可以设置_url
(但不会改变)request.scope
request.base_url
from starlette.datastructures import URL
@app.middleware("http")
async def process_api_event(request: Request, call_next):
request._url = URL('sample_url')
print(request.url)
...
推荐阅读
- java - 我无法映射模型和 DTO 无法执行语句;SQL [n/a] 约束 [null]
- visual-studio-code - 如何让 VS Code 格式化空行?
- javascript - 在一个“.map”中为数组的每个元素获取多个对象
- java - Netbeans 12.3 包含带有错误标记的文件
- python - 将数据插入 sqlite3 表 Python 时出错
- r - 将R中的data.frame从宽格式重塑为长格式
- python - pyhon(kivy) 应用程序在每次更改后重新加载
- oracle - SQL Oracle - 如何使查询动态接受多天来计算到期
- solr - Solr 术语方面是否可以使用多个字段?
- .net - NUnit 和大量并行测试