2

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

4

1 回答 1

1

您可以像这样构建 swagger,但是在 init 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)
于 2020-05-19T14:32:43.440 回答