【问题标题】:How to set base url for swagger with flask_restplus?如何使用flask_restplus为swagger设置基本网址?
【发布时间】:2019-02-25 13:29:56
【问题描述】:

我正在使用来自 apache 服务器的 flask_restplus 提供烧瓶应用程序。我正在使用ProxyPass 将所有流量转发到应用程序的某个 url 扩展名,就像 apache .conf 文件中的那样:

ProxyPass /some-extension http://127.0.0.1:3000
ProxyPassReverse /some-extension http://127.0.0.1:3000

flask_restplus api 设置如下:

from flask_restplus import Api
api = Api(
    title='App Title',
    doc='/docs'
) 

该应用程序工作正常,除了当我转到 swagger 路由 /some-extension/docs 时,flask 服务器开始在 url base /swaggerui/(而不是所需的 /some-extension/swaggerui)处寻找 swagger 依赖项,因此 swagger UI 失败加载。

有没有办法配置flask_restplus(或其他方式),以便为/some-extension/swaggerui/(而不是根网址)提供服务?

【问题讨论】:

    标签: python swagger-ui flask-restplus


    【解决方案1】:

    好的,经过一番摆弄后到达那里。您需要将流量代理到扩展程序并设置带有蓝图的烧瓶,以便整个应用程序也从该扩展程序运行。所以在你的 apache 配置中是这样的:

    ProxyPass /some-extension http://127.0.0.1:3000/some-extension
    ProxyPassReverse /some-extension http://127.0.0.1:3000/some-extension
    

    ...您必须像这样在您的 apache 配置中代理传递扩展名 /swaggerui:

    ProxyPass /swaggerui http://127.0.0.1:3000/swaggerui
    ProxyPassReverse /swaggerui http://127.0.0.1:3000/swaggerui
    

    ...然后在您的flask_restplus 设置中使用此模式(来自official guide):

    from flask import Flask, Blueprint
    from flask_restplus import Api
    
    app = Flask(__name__)
    blueprint = Blueprint('api', __name__, url_prefix='/some-extension')
    api = Api(blueprint, doc='/docs/')
    app.register_blueprint(blueprint)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2015-12-26
      • 1970-01-01
      相关资源
      最近更新 更多