У меня есть 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)