コンテンツへスキップ

WSGIを含める - Flask、Django、その他

サブアプリケーション - マウントプロキシの背後で見たように、WSGIアプリケーションをマウントできます。

そのために、WSGIMiddleware を使用して、Flask、DjangoなどのWSGIアプリケーションをラップできます。

WSGIMiddleware の使用

WSGIMiddleware をインポートする必要があります。

次に、WSGI (例: Flask) アプリをミドルウェアでラップします。

そして、それをパスの下にマウントします。

from fastapi import FastAPI
from fastapi.middleware.wsgi import WSGIMiddleware
from flask import Flask, request
from markupsafe import escape

flask_app = Flask(__name__)


@flask_app.route("/")
def flask_main():
    name = request.args.get("name", "World")
    return f"Hello, {escape(name)} from Flask!"


app = FastAPI()


@app.get("/v2")
def read_main():
    return {"message": "Hello World"}


app.mount("/v1", WSGIMiddleware(flask_app))

確認

これで、パス /v1/ の下のすべてのリクエストはFlaskアプリケーションによって処理されます。

そして、残りは FastAPI によって処理されます。

実行して https://:8000/v1/ にアクセスすると、Flaskからのレスポンスが表示されます。

Hello, World from Flask!

そして https://:8000/v2 にアクセスすると、FastAPIからのレスポンスが表示されます。

{
    "message": "Hello World"
}