Zum Inhalt

WSGI inkludieren – Flask, Django und andere

Sie können WSGI-Anwendungen mounten, wie Sie es in Unteranwendungen – Mounts, Hinter einem Proxy gesehen haben.

Dazu können Sie die WSGIMiddleware verwenden und damit Ihre WSGI-Anwendung wrappen, zum Beispiel Flask, Django usw.

WSGIMiddleware verwenden

Sie müssen WSGIMiddleware importieren.

Wrappen Sie dann die WSGI-Anwendung (z. B. Flask) mit der Middleware.

Und dann mounten Sie das auf einem Pfad.

from flask import Flask, request
from markupsafe import escape
from readyapi import ReadyAPI
from readyapi.middleware.wsgi import WSGIMiddleware

flask_app = Flask(__name__)


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


app = ReadyAPI()


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


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

Es ansehen

Jetzt wird jede Anfrage unter dem Pfad /v1/ von der Flask-Anwendung verarbeitet.

Und der Rest wird von ReadyAPI gehandhabt.

Wenn Sie das mit Uvicorn ausführen und auf http://localhost:8000/v1/ gehen, sehen Sie die Response von Flask:

Hello, World from Flask!

Und wenn Sie auf http://localhost:8000/v2 gehen, sehen Sie die Response von ReadyAPI:

{
    "message": "Hello World"
}