Задать вопрос

Почему url_for дублирует url_prefix для blueprint при запуске flask через fcgi?

Добрый день. Есть простое приложение на Flask:
api.py

from flask import Blueprint
from flask import url_for, jsonify

api = Blueprint('api', __name__)

@api.route('/', methods=['GET', 'OPTIONS'])
def index():
    links = dict()
    links['docs'] = url_for('.docs')
    return jsonify(_links=links)


@api.route('/docs/', methods=['GET'])
def docs():
    doc = {
        " key": "value"
    }
    return jsonify(doc), 200


app.py

from flask import Flask, request
from .api import api

app = Flask(__name__)
app.register_blueprint(api, url_prefix='/api')


Если запускать приложение через app.run()
from .app import app
if __name__ == '__main__':
    app.run(debug=True)

тогда при выполнении запроса /api/ мне в ответ приходит ресурс с нормальной ссылкой /api/docs/

Если же я запускаю приложение на сервере через WSGI:
from .app import app
from flup.server.fcgi import WSGIServer
if __name__ == '__main__':
    WSGIServer(app, bindAddress='/tmp/fcgi.sock').run()

при выполнении запроса /api/ мне в ответ приходит ресурс со ссылкой /api/api/docs/.
Откуда берется дубликат? С чем это может быть связано и как лечить?
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы