【发布时间】:2017-05-27 00:44:49
【问题描述】:
我正在使用 Flasgger 将 Swagger UI 添加到我的 Python Flask 应用程序中。 Internet 上最常见的示例是使用 @app.route 的基本 Flask 样式:
from flasgger.utils import swag_from
@app.route('/api/<string:username>')
@swag_from('path/to/external_file.yml')
def get(username):
return jsonify({'username': username})
这行得通。
然而,在我的应用程序中,我没有使用 @app.route 装饰器来定义端点。我正在使用烧瓶蓝图。如下:
from flask import Flask, Blueprint
from flask_restful import Api, Resource
from flasgger.utils import swag_from
...
class TestResourceClass(Resource):
@swag_from('docs_test_get.yml', endpoint='test')
def get() :
print "This is the get method for GET /1.0/myapi/test endpoint"
app = Flask(__name__)
my_api_blueprint = Blueprint('my_api', __name__)
my_api = Api(my_api_blueprint)
app.register_blueprint(my_api_blueprint, url_prefix='/1.0/myapi/')
my_api.add_resource(TestResourceClass, '/test/'
endpoint='test',
methods=['GET', 'POST', 'PUT', 'PATCH', 'DELETE'])
....
如上所示,我在绑定到 GET 方法端点的 TestResourceClass.get() 方法上使用了 @swag_from 装饰器。我在这两个地方也有 endpoint=test 匹配。
但是我在 Swagger UI 上什么都没有,全是空白的。 docs_test_get.yml 文件确实包含有效的 yaml 标记来定义 swagger 规范。
我错过了什么?如何让 Flasgger Swagger UI 与基于 Flask 蓝图的设置一起使用?
【问题讨论】:
-
我知道这对你的问题没有帮助,但这里只是以防万一。我不使用flassger,我使用flask-swagger:github.com/gangverk/flask-swagger我已经创建了一个专门解决这个问题的拉取请求:github.com/gangverk/flask-swagger/pull/34我只能告诉你flask-swagger现在支持蓝图
-
谢谢,我去看看。我查看了替代方案,发现 github.com/rantav/flask-restful-swagger 似乎对使用 BluePrints 和 Resources 进行 API 定义的 Flask 应用程序有更好的支持。
标签: python flask swagger swagger-ui