You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Starlette的proxy函数接收所有路径与HTTP请求方法?

解决Starlette代理函数接收所有路径和请求方法的问题

你的代码问题在于:原路由仅匹配根路径/,且默认只处理GET请求,所以无法覆盖所有路径和HTTP方法。修改方案如下:

from starlette.applications import Starlette
from starlette.requests import Request
from starlette.routing import Route

async def proxy(request: Request):
    # 在此编写你的代理处理逻辑
    pass

routes = [
    # 使用/{path:path}匹配所有路径,methods=["*"]处理所有HTTP方法
    Route("/{path:path}", endpoint=proxy, methods=["*"])
]

app = Starlette(routes=routes)

关键修改说明:

  • 路径匹配:"/{path:path}" 是Starlette的路径参数语法,:path 表示匹配任意长度的路径片段(包括嵌套子路径,如/api/v1/users、/static/css/main.css等),确保所有请求路径都能被路由到proxy函数。
  • 请求方法:methods=["*"] 指定该路由接收所有HTTP请求方法(GET、POST、PUT、DELETE、OPTIONS等),如果需要更精准控制,也可以显式列出需要支持的方法,比如methods=["GET", "POST", "PUT"]。

内容的提问来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:25:19