swagger 如何将静态文件夹移动到前缀为flask-restx的url

hts6caw3  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(93)

我试图使用flask-restx包部署一个应用程序flask,我被如何在prod服务器上正确显示文档所困。它在没有任何前缀的情况下在本地运行良好,但在服务器上,文件url需要以my-prefix为前缀,我正在努力使swaggerui文件可以从url访问:url/my-prefix
下面是我的代码:

app = Flask(__name__)
api = Api(
          app,
          version='3.0',
          title='My API',
          description='My API',
          doc="/my-prefix/docs/",
          prefix="/my-prefix",
          base_url="/my-prefix"
)

字符串
这样,我就可以在正确的url上获得swagger.json,但在文档页面的代码源中没有正确的引用。swaggerui文件在文档页面的代码源中没有很好的引用,也不能从url/my-prefix/swaggerui/files访问。
所以我加了这个:

@apidoc.apidoc.add_app_template_global
def swagger_static(filename):
     return f"/my-prefix/swaggerui/{filename}"

api = Api(
          app,
          version='3.0',
          title='My API',
          description='My API',
          doc="/my-prefix/docs/",
          prefix="/my-prefix",
          base_url="/my-prefix"
)

@api.documentation
def custom_ui():
     return render_template("swagger-ui.html", title=api.title, specs_url="/my-prefix/swagger.json")


这样,swaggerui文件和swagger.json文件可以方便地在文档页面的代码源中引用(url/my-prefix/swaggerui/myfileurl/my-prefix/swagger.json),但是swaggerui文件不能从这个URL访问。你知道我应该在这个URL上添加什么来使它可访问吗:url/my-prefix/swaggerui/myfile

oknwwptz

oknwwptz1#

可以通过Apidoc static_url_path覆盖来完成

from flask import Flask
from flask_restx import Api
from flask_restx.apidoc import apidoc

app = Flask(__name__)
api = Api(
          app,
          version='3.0',
          title='My API',
          description='My API',
          doc="/my-prefix/docs/""
)

apidoc.static_url_path = "/my-prefix/swaggerui"

字符串

相关问题