Проверка yaml Flasgger - PullRequest
       75

Проверка yaml Flasgger

0 голосов
/ 09 июля 2020

У меня есть API, написанный на сервере OpenAPI 3.0 и flask. Я хотел бы автоматически проверять все запросы на файл YAML, не разделяя его для всех конечных точек. Можно ли использовать flasgger для выполнения этой задачи (или любой другой инструмент, совместимый с python 2.7)?

Пример кода, демонстрирующий концепцию:

app = Flask(__name__)
app.config['SWAGGER'] = {
    'title': 'Test API',
}
app.config['SWAGGER']['openapi'] = '3.0.0'
swagger = Swagger(app=app, template_file=PATH_TO_OPENAPI, parse=True)


class GetUser(MethodView):
    def get(self):
        return jsonify({'id': request.args.get('userId'), 'type': 'NORMAL'})

class GetGroup(MethodView):
    def get(self):
        return jsonify({'name': request.args.get('groupName'), 'type': 'NORMAL'})


app.add_url_rule(
    '/users/', view_func=GetUser.as_view(name='users'),
    methods=['GET'])

app.add_url_rule(
    '/groups/', view_func=GetGroup.as_view(name='groups'),
    methods=['GET'])

openapi.yml

   paths:
      /users:
        get:
          summary: Returns a user by ID.
          parameters:
            - name: userId
              in: query
              required: true
              schema:
                type: integer
                minimum: 0
          responses:
              '200':
                description: Ok
          operationId: GetUser
      /groups:
        get:
          summary: Returns groups
          parameters:
            - name: groupName
              in: query
              required: true
              schema:
                type: string
          responses:
              '200':
                description: Ok
          operationId: GetGroup

Ожидаемое поведение:

/ users /? UserId = 1 -> OK

/ users / -> 400 (теперь возвращает 200 с id = null)

/ users /? UserId = -1 -> 400 (теперь возвращает 200 с id = null)

...