Adicionando WSGI - Flask, Django, entre outros¶
Como você viu em Sub Applications - Mounts e Behind a Proxy, você pode "montar" aplicações WSGI.
Para isso, você pode utilizar o WSGIMiddleware
para encapsular a sua aplicação WSGI, como por exemplo Flask, Django, etc.
Usando o WSGIMiddleware
¶
Você precisa importar o WSGIMiddleware
.
Em seguinda, encapsular a aplicação WSGI (e.g. Flask) com o middleware.
E então "montar" em um caminho de rota.
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))
Conferindo¶
Agora todas as requisições sob o caminho /v1/
serão manipuladas pela aplicação utilizando Flask.
E o resto será manipulado pelo FastAPI.
Se você rodar a aplicação e ir até http://localhost:8000/v1/, você verá o retorno do Flask:
Hello, World from Flask!
E se você for até http://localhost:8000/v2, você verá o retorno do FastAPI:
{
"message": "Hello World"
}