Как указать базовый URL в документации Flask Restplus

Не могли бы вы описать, как указать базовый URL-адрес в документации, автоматически сгенерированной Flask Restplus?

Я запускаю следующий код, но в пользовательском интерфейсе swagger ничего не отображается:

from flask import Flask
from flask_restplus import Api

app = Flask(__name__)
api = Api(app,
    title='Data Quality Framework API',
    version='v0.1',
    doc='/data_quality_framework/api/documentation',
    contact='[email protected]',
    base_url='/test')

введите описание изображения здесь


person Alexis.Rolland    schedule 26.04.2017    source источник


Ответы (3)


По умолчанию при использовании этого шаблона (т. е. с app в качестве аргумента конструктора) API находится в корневой конечной точке (т. е. /), а документация swagger находится в корне API (т. е. по-прежнему /).

У вас есть несколько возможностей:

Используйте схему для изменения корня API

Если вы хотите сохранить документацию в корне API, но изменить корень API, используйте схему для регистрации вашего API там, где вы хотите.

from flask import Flask, Blueprint
from flask_restplus import Api

app = Flask(__name__)
blueprint = Blueprint('api', __name__, url_prefix='/test')
api = Api(blueprint)
app.register_blueprint(blueprint)

assert url_for('api.doc') == '/test/'

Изменить только расположение документации

Если вы хотите оставить корень API на том же месте, но переместить только расположение документации, Flask-restplus позволяет указать его с помощью параметра doc.

from flask import Flask
from flask_restplus import Api

app = Flask(__name__)
api = Api(app, doc='/test/')

assert url_for('doc') == '/test/'

Вы также можете комбинировать оба. См. http://flask-restplus.readthedocs.io/en/stable/swagger.html#customization для получения дополнительных сведений о расширенной настройке документации.

person noirbizarre    schedule 30.05.2017
comment
Спасибо, как обсуждалось здесь, я смог добиться этого, удалив url_for сам и помещая URL-адрес документации непосредственно в api = Api(..., doc='/documentation') - person Alexis.Rolland; 30.05.2017
comment
Здравствуйте, Алексис и Аксель, ваш разговор немного вводит в заблуждение, потому что он неполный, даже в разговоре по ссылке на github. Проще говоря, все, что нужно, это иметь что-то вроде url_prefix="/api" при создании объекта чертежа и сказать /doc в параметре документа о времени создания объекта API. поэтому окончательный URL-адрес становится /api/doc, а Base URL будет /api полностью логичным. ссылка на документацию, добавленная Акселем, объясняет намного лучше. - person Ciasto piekarz; 23.02.2018
comment
Да, мне не нужна была строка утверждения: api = Api(app, doc='/api/v1', prefix=/api/v1) - person ; 10.11.2018

вы можете определить его с помощью параметра prefix. Пробовал на версии 0.13.0.

from flask import Flask
from flask_restplus import Api

app = Flask(__name__)
api = Api(app, prefix='/api')
person Agung Wiyono    schedule 30.01.2020

добавить строку

from flask import url_for
person league3236    schedule 23.12.2019