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"
}