我在Flask中创建了多个端点,并为每个端点创建了yml文件。因此,例如,我有10个端点和10个小yaml文件。使用它不是很舒服,所以我想将所有描述放入1个yml文件中。 我尝试了这个: 应用脚本:
from flask import Flask, jsonify, abort, make_response, request
from flasgger import Swagger, swag_from
app = Flask(__name__)
swagger = Swagger(app)
@app.route('/api/test/<int:ids>', methods=['GET'])
@swag_from('app.yml')
def test(ids):
"""
Test function
Some test function for debugging Swagger.
"""
return jsonify({"var1": 12312300, "var2":"sdfsdf"})
@app.route('/api/test2/<int:var>', methods=['GET'])
@swag_from('app.yml')
def test(var):
"""
Test function 2
Some test function for debugging Swagger.
"""
abort(make_response(jsonify(message="There is no model with this index"), 404))
和我的app.yml
:
paths:
/api/test2/<int:var>:
get:
return some information
---
tags:
- stage1:
- name: var
description: ID
in: path
required: true
type: integer
responses:
200:
description: OK.
/api/test/<int:ids>:
get:
Test function
Some test function for debugging Swagger.
---
tags:
- stage1
parameters:
- name: ids
description: ID
in: path
required: true
type: integer
responses:
200:
description: OK.
405:
description: Invalid input
但这会引发错误:
错误提取错误内部服务器错误/apispec_1.json
这意味着我的yml
文件中有问题。 如何正确编写?
我在github上发现了这样的问题: https://github.com/rochacbruno/flasgger/issues/264
答案 0 :(得分:1)
您可以像这样构建swagger,但是在进行初始化swagger之前,应确保已调用方法register_blueprint
。
def init(app: Flask):
# yaml path
conf_path = os.path.abspath(__file__)
conf_path = os.path.dirname(conf_path)
conf_path = os.path.join(conf_path, 'swagger.yml')
swagger = Swagger(app=app, template_file=conf_path)