【发布时间】:2022-08-14 16:46:47
【问题描述】:
我正在尝试使用 python Fast API 框架代理外部网站(在不同容器上运行的花监控 URL):
client = AsyncClient(base_url=f\'http://containername:7800/monitor\')
@app.get(“/monitor/{path:path}”)
async def tile_request(path: str):
req = client.build_request(\"GET\", path)
r = await client.send(req, stream=True)
return StreamingResponse(
r.aiter_raw(),
background=BackgroundTask(r.aclose),
headers=r.headers
)
它能够为每个路径代理容器 URL。例如。
http://python_server:8001/monitor/dashboard --> http://containername:7800/monitor/dashboard
http://python_server:8001/monitor/tasks --> http://containername:7800/monitor/tasks
它运作良好。但是当 PATH 在 URL 中有一些查询参数时它会失败。
例如。
http://python_server:8001/monitor/dashboard?json=1&_=1641485992460 --> redirects to http://containername:7800/monitor/dashboard
(请注意,没有查询参数附加到 URL)。
任何人都可以帮助我们如何使用任何查询参数代理这个外部网站的任何路径。
-
你只传递路径,你不捕获或传递查询参数。您可以从请求对象中获取它们,
-
这回答了你的问题了吗? FastAPI variable query parameters
-
谢谢,我认为它应该可以工作..需要检查如何将查询参数传递给 httpx 客户端。