如何解决FastAPI-设置请求对象的网址或路径
@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)
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。