首页 > 解决方案 > Flask-Restx:从 Swagger 设置默认路由?

问题描述

在加载我的招摇界面之前,我有一些数据库服务需要一些时间才能运行。所以,我想加载一个包含信息的 HTML 页面,然后将其重定向到 swagger 文档。

如何添加可以使用 flask-restx 加载的默认路由?

该代码将按照以下方式执行某些操作

app = Flask(__name__)


@app.route("/start")
def hello():
    return render_template("loading_spinner.html")


api = Api(
    app,
    version="1.0",
    title="Python API",
    description="API with Flask-RestX",
)

nsHealthCheck = api.namespace(
    "api/v1/healthcheck", description="Health check for the API"
)

在这个例子中,我想/start在 swagger 界面之前加载。我怎样才能做到这一点?

标签: flaskswaggerflask-restx

解决方案


我希望我得到你的 q 权利。

在我理解之后,解决方案可能是:

  • 一个用户界面问题
  • 连同一个 Flask 问题
  1. 我的第一次尝试如果我必须做这样的事情我会做什么绝对只是 Geeks 在这里写的:https ://www.geeksforgeeks.org/how-to-show-page-loading-div-until-the-page- has-finished-loading/ 将此 html 加载图标与“turbo-flask”包结合使用。

这个想法很简单,当用户等待加载页面时(更准确地说,直到您可以加载 swagger 文档,html 加载器完成它的工作,然后 bummm,在这里您可以使用此处所写的动态更新:https: //blog.miguelgrinberg.com/post/dynamically-update-your-flask-web-pages-using-turbo-flask

这是 3pp:https ://github.com/miguelgrinberg/turbo-flask 所以最有趣的部分在这里:

import time

# ...

def update_load():
    with app.app_context():
        while True:
            time.sleep(5)
            turbo.push(turbo.replace(render_template('loadavg.html'), 'load'))

然后你可以调整默认的 API 文档渲染,因为它说:https ://flask-restx.readthedocs.io/en/latest/swagger.html#customization

from flask import Flask
from flask_restx import Api, apidoc

app = Flask(__name__)
api = Api(app)

@api.documentation
def custom_ui():
    return apidoc.ui_for(api)

当然,您甚至可以修改招摇的网址......

  1. 如果第一个看起来是毁灭性的,那么:

另一种解决方案可能是通过修改招摇负载,在那里插入 SSE 类型的负载,我的意思是这个:https ://github.com/singingwolfboy/flask-sse 直到你发送你的工作状态在哪里,然后简单地最后更换页面。

可能是,我把这个简单的问题复杂化了。在这种情况下,我正在等待更优雅的解决方案。


推荐阅读