Vercel的路由中间件现在可以用Python写了。FastAPI、Flask、Django这些Python应用都能用上,中间件在请求到达应用之前运行,可以改写请求、做重定向,或者直接给出响应。

接入方式是在vercel.toml里把代理入口指向你的proxy:

  • [proxy] 段下写 entrypoint = "proxy:proxy"

这个中间件是一个ASGI或WSGI应用,和主应用分开运行,能用的只有pyproject.toml里vercel.proxy依赖组中的包。中间件里import了什么,就得把对应的包加进这个组:

  • uv add --group vercel.proxy vercel-proxy

vercel-proxy这个包提供了在Vercel上写路由中间件的工具,其中包括一个按路径分发请求的Proxy应用。示例里从vercel.proxy导入了ContinueResponse、Proxy、RedirectResponse、Request和Response,先实例化一个proxy对象,再用装饰器挂路由。

第一条路由匹配/old-blog/{slug},取出路径参数里的slug做URL编码,然后返回RedirectResponse,跳转到/blog/{slug},状态码308。第二条路由匹配/api/{path:path},返回ContinueResponse,并带上请求头x-api-version: 2。

没有匹配到任何路由的请求,会原样继续交给你的应用处理。更多细节可以查路由中间件的Python参考文档。