хостинг flask_restplus Swagger UI на Herokuapp говорит, что определение API не предоставлено.

Я пытаюсь разместить пользовательский интерфейс Swagger Flask Restplus на сервере Heroku. Собирается успешно и при проверке в логах хероку даже там пишет "Сборка выполнена успешно".

Но проблема в том, что когда я проверяю фактический хостинг, на странице появляется только сообщение о том, что
определение API не предоставлено.

введите описание изображения здесь Кстати, пользовательский интерфейс swagger успешно загружается в браузере при локальном запуске.

Ниже приведен пример фрагмента кода для swagger-ui
.

from flask import Flask
from flask_restplus import Resource, Api
import os

app = Flask(__name__)
api = Api(app)

@api.route('/hello')
class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

if __name__ == '__main__':
    port = int(os.environ.get("PORT", 5000)) 
    app.run(host="0.0.0.0", port=port, debug=True)

Так что я делаю неправильно здесь? Есть ли способ разместить простой минимальный интерфейс flask_restplus swagger-UI на heroku? Любая помощь приветствуется, спасибо.

ИЗМЕНИТЬ

Ниже приведено содержимое файла swagger.json.

{
    "swagger": "2.0",
    "basePath": "/",
    "paths": {
        "/hello": {
            "get": {
                "responses": {
                    "200": {
                        "description": "Success"
                    }
                },
                "operationId": "get_hello_world",
                "tags": [
                    "default"
                ]
            }
        }
    },
    "info": {
        "title": "API",
        "version": "1.0"
    },
    "produces": [
        "application/json"
    ],
    "consumes": [
        "application/json"
    ],
    "tags": [
        {
            "name": "default",
            "description": "Default namespace"
        }
    ],
    "responses": {
        "ParseError": {
            "description": "When a mask can't be parsed"
        },
        "MaskError": {
            "description": "When any error occurs on mask"
        }
    }
}

Также, если это поможет, это то, что находится внутри Procfile

web: python app.py

person Aman Singh    schedule 27.02.2020    source источник
comment
ctrl+shift+i или F12 что говорит консоль браузера? Вы пробовали конечную точку appname.herokuapp.com/hello? Добавьте содержание package.json к вашему вопросу.   -  person Tin Nguyen    schedule 27.02.2020
comment
@TinNguyen конечные точки работают. Но Swagger-UI никогда не появляется при размещении на Heroku. Я также пытался изучить ctrl+shift+i и F12.   -  person Aman Singh    schedule 27.02.2020
comment
@TinNguyen Я добавил содержимое package.json к вопросу   -  person Aman Singh    schedule 27.02.2020
comment
Это не package.json, это swagger.json, но вы можете оставить это в вопросе.   -  person Tin Nguyen    schedule 27.02.2020
comment
Я смог найти только swagger.json. Можете ли вы помочь мне с тем, где я могу найти package.json ?   -  person Aman Singh    schedule 27.02.2020
comment
О, подождите, извините. Это питон. Можете ли вы предоставить свои требования.txt?   -  person Tin Nguyen    schedule 27.02.2020


Ответы (1)


Публикация того, что сработало для меня, на всякий случай, если у кого-то возникнет такая же проблема в будущем.

Я изменил Procfile с

web: python app.py

to

web: gunicorn app:app

а затем первая страница swagger-UI также начала появляться на героку. Раньше конечные точки все еще были доступны, но первая страница, т.е. страница swagger-UI не отображалась. Но внесение этого изменения заставило его работать.

person Aman Singh    schedule 04.03.2020