无法使用Flask Blueprints和Swagger UI获取API规范

时间:2014-08-24 23:59:59

标签: python flask swagger swagger-ui flask-restful

因此,按照使用烧瓶蓝图(https://github.com/rantav/flask-restful-swagger/blob/master/examples/blueprints.py)的swagger ui的示例,我有以下代码:

app = Flask(__name__)
test_blueprint = Blueprint('tests', __name__)
test_api = swagger.docs(restful.Api(test_blueprint), apiVersion='0.1',
                        basePath='http://localhost:5000',
                        produces=["application/json", "text/html"],
                        api_spec_url='/api/spec')

# Operation TestOp defined here
test_api.add_resource(TestOp, '/')

if __name__ == "__main__":
    app.register_blueprint(test_blueprint, url_prefix='/test')
    app.run(debug=True)

但是,当我尝试访问api规范文档时,无法找到该URL。 我试过......

localhost:5000/api/spec
localhost:5000/test_api/api/spec
localhost:5000/test_api

...所有这些都返回404.我也尝试创建没有蓝图的应用程序,用

创建文档
swagger.docs(restful.Api(app)...)

代替。如果完成此操作并且没有涉及蓝图,我可以通过

访问文档
localhost:5000/api/spec

那么,我是否使用蓝图错误地创建了我的应用程序,或者我只是没有使用正确的URL来访问文档?

3 个答案:

答案 0 :(得分:4)

看起来你只是没有找到正确的网址。由于您的蓝图url_prefix是" / test",因此Swagger规范网址应位于:

localhost:5000/test/api/spec

答案 1 :(得分:2)

我知道这个帖子已经老了,但我今天遇到了这个问题,试图用我的(有点)现代烧瓶+ python3应用程序使用烧瓶 - 使用蓝图。同样的问题,没有错误,无论我尝试什么都没有规格。

我最终放弃了这个软件包(因为它看起来似乎并不是非常活跃),尽管我喜欢这个软件包的标记。

我选择了Flasgger,它似乎最近更新了。在10分钟内我完成并运行了。代码和简短教程在这里:https://github.com/rochacbruno/flasgger

答案 2 :(得分:0)

swagger.docs()中出了点问题

from flask_restful import Api
test_blueprint = Blueprint('tests', __name__)
test_api = swagger.docs(Api(test_blueprint)...)
app.register_blueprint(test_blueprint)

还有什么

main_blueprint = Blueprint('api', __name__, url_prefix='/demo')