Flasgger:如何在一个yaml文件中写几个端点的描述?

时间:2019-07-11 11:15:50

标签: python-3.x api yaml swagger flasgger

我在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

1 个答案:

答案 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)