本文へスキップ
MameTechNews
フロントエンド

Vercel、Pythonでルーティングミドルウェアを書けるように

## POINTS

  • FastAPI、Flask、Djangoの前段として、PythonのASGIかWSGIで経路を書ける
  • 依存は本体と分かれ、vercel.proxyグループに宣言したパッケージだけが前段で使える
  • どの経路にも合わない要求はそのままアプリへ届く。付け替えとヘッダ付与は配信側へ出せる

設定はvercel.tomlのproxyで、エントリポイントを自分の関数へ向ける。ミドルウェアはASGIまたはWSGIのアプリで、本体とは別に動き、読み込めるパッケージはpyproject.tomlのvercel.proxy依存グループに入れたものだけだ。公式のvercel-proxyには、パスごとに処理を分けるProxyがある。

合致した経路では、308などで別のURLへリダイレクトしたり、ContinueResponseでヘッダを足してから本体へ渡したりできる。どの経路にも合わないリクエストは、変更されずにアプリへ続く。古いURLの付け替え、APIの版を示すヘッダ、認証前の振り分けを、フレームワークごとのミドルウェアではなく配信側に寄せられる。

本体と依存が分かれているので、前段に置いたライブラリがアプリの環境を膨らませない。逆に、アプリ側に入れたパッケージを前段から参照することはできない。Python実行そのものは既に一般提供されているが、リクエストの入口をPythonで制御できるようになった点は別の変更だ。導入時は、リダイレクトと継続のどちらで返すか、前段の依存グループに必要なものだけが入っているかを確認する。