Flask: Декоратор для проверки схемы JSON и JSON
У меня есть приложение колбы с вызовами, ожидающими полезную нагрузку JSON. Перед обработкой каждого вызова у меня есть двухэтапный процесс проверки ошибок:
Утверждение, что полезная нагрузка является допустимым JSONУтверждение, что полезная нагрузка JSON соответствует определенной схемеКоторый реализован следующим образом:
@app.route('/activate', methods=['POST'])
def activate():
request_id = request.__hash__()
# Assert that the payload is a valid JSON
try:
input = request.json
except BadRequest, e:
msg = "payload must be a valid json"
return jsonify({"error": msg}), 400
# JSON Schema Validation
try:
validate(request.json, app.config['activate_schema'])
except ValidationError, e:
return jsonify({"error": e.message}), 400
Поскольку этот код дублируется во многих вызовах, мне интересно, смогу ли я элегантно перенести его в декоратор, что-то в виде:
@validate_json
@validate_schema(schema=app.config['activate_schema'])
@app.route('/activate', methods=['POST'])
def activate():
....
Проблема в том, чтоrequest
Аргумент неявный: я могу ссылаться на него внутри функции, но это не параметр к нему. Поэтому я не уверен, как использовать его в декораторе.
Как я могу реализовать проверки правильности с помощью декораторов Python?