Как установить базовый URL для сваггера с flask_restplus? - PullRequest
0 голосов
/ 23 февраля 2019

Я обслуживаю приложение фляги с flask_restplus с сервера apache.Я использую ProxyPass для пересылки всего трафика в приложение с некоторым расширением URL, как в файле apache .conf:

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

API flask_restplus настроен следующим образом:

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

Приложение работает нормально, за исключением того, что, когда я иду по маршруту сваггера /some-extension/docs, сервер флеш-памяти начинает поиск зависимостей сваггера в базе url / swaggerui / (а не в обязательном порядке /some-extension/swaggerui) и т. Д.пользовательский интерфейс swagger не может быть загружен.

Есть ли способ настроить flask_restplus (или иным образом) так, чтобы swagger обслуживался /some-extension/swaggerui/ (а не корневой URL)?

1 Ответ

0 голосов
/ 25 февраля 2019

ОК, попал туда после некоторой возни.Вам необходимо прокси-трафик на расширение и настроить колбу с планом, чтобы все приложение также запускалось с этого расширения.Итак, что-то вроде этого в вашей конфигурации Apache:

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

... и вам нужно ProxyPass расширение / swaggerui, как в вашей конфигурации Apache:

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

... изатем используйте этот шаблон в настройках flask_restplus (из официального руководства ):

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)
...