包含 WSGI - Flask、Django 及其他框架¶
你可以像在子应用 - 挂载和代理后方中看到的那样挂载 WSGI 应用。
为此,你可以使用 WSGIMiddleware 来包装你的 WSGI 应用,例如 Flask、Django 等。
使用 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 处理。
如果你运行它并访问 http://localhost:8000/v1/,你将看到来自 Flask 的响应:
Hello, World from Flask!
如果你访问 http://localhost:8000/v2,你将看到来自 FastAPI 的响应:
{
"message": "Hello World"
}