【问题标题】:FastAPI - Set the url or path for the Request objectFastAPI - 设置请求对象的 url 或路径
【发布时间】:2021-02-12 11:28:09
【问题描述】:

我有一个看起来像这样的函数:

@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 文档,但在这种情况下找不到我需要的信息。任何帮助将不胜感激!

【问题讨论】:

  • 为什么要更改 url 属性?

标签: python fastapi setattr starlette


【解决方案1】:

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)
    ...

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多