【问题标题】:hosting flask_restplus Swagger UI on Herokuapp says "No API Definition provided."在 Herokuapp 上托管 flask_restplus Swagger UI 显示“未提供 API 定义”。
【发布时间】:2020-03-05 00:47:18
【问题描述】:

我正在尝试在 Heroku 服务器上托管 Flask Restplus 的 Swagger UI。它构建成功,当在 heroku 的日志中检查时,即使它显示“构建成功”。

但问题是,当我检查实际托管时,页面上只有一条消息说
未提供 API 定义

顺便说一句,在本地运行时,swagger-UI 会在浏览器上成功加载。

以下是 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)

那么我在这里做错了什么?有什么方法可以在 heroku 上托管一个简单的最小 flask_restplus swagger-UI 吗?任何帮助表示赞赏,谢谢。

编辑

以下是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

【问题讨论】:

  • ctrl+shift+iF12 浏览器控制台说什么?您是否尝试过 appname.herokuapp.com/hello 端点?将package.json 的内容添加到您的问题中。
  • @TinNguyen 端点正在工作。但是当托管在 Heroku 上时,Swagger-UI 从未出现过。我也试过调查ctrl+shift+iF12
  • @TinNguyen 我已将package.json 的内容添加到问题中
  • 那不是package.json 那是swagger.json 但你可以把它留在问题中。
  • 我只能找到swagger.json。你能帮我看看在哪里可以找到package.json 吗?

标签: python python-3.x heroku swagger-ui flask-restplus


【解决方案1】:

发布对我有用的东西,以防万一将来有人有同样的担忧。

我将 Procfile

web: python app.py

web: gunicorn app:app

然后,swagger-UI 的第一页也开始出现在 heroku 上。早些时候端点仍然可以访问,但第一页即。 swagger-UI 页面没有出现。但是进行此更改后,它就起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2017-10-08
    • 1970-01-01
    相关资源
    最近更新 更多