Исключение UnprocessableEntity
Исключение UnprocessableEntity относится к классу HTTP-исключений
Flask и соответствует статус-коду 422. Оно применяется, когда
сервер понимает формат запроса, но содержащиеся в нём данные
семантически некорректны. Например, при валидации формы или
JSON-тела запроса. При возникновении этого исключения Flask
возвращает клиенту ответ с кодом 422. Класс наследуется от
HTTPException и принимает необязательный параметр
description, который попадает в тело ответа.
Синтаксис
from werkzeug.exceptions import UnprocessableEntity
raise UnprocessableEntity(description='...')
Пример
Давайте выбросим исключение UnprocessableEntity при
некорректных данных формы:
from flask import Flask, request
from werkzeug.exceptions import UnprocessableEntity
app = Flask(__name__)
@app.route('/user', methods=['POST'])
def user():
name = request.form.get('name')
if not name:
raise UnprocessableEntity('name is required')
return 'ok'
Результат выполнения кода при пустом поле name:
422 Unprocessable Entity
name is required
Пример
Давайте перехватим исключение UnprocessableEntity
и вернём собственный JSON-ответ:
from flask import Flask, jsonify, request
from werkzeug.exceptions import UnprocessableEntity
app = Flask(__name__)
@app.errorhandler(UnprocessableEntity)
def handle_unprocessable(error):
res = {'error': error.description}
return jsonify(res), 422
@app.route('/user', methods=['POST'])
def user():
data = request.get_json()
if 'name' not in data:
raise UnprocessableEntity('name is required')
return 'ok'
Результат выполнения кода при отсутствии ключа name:
{"error": "name is required"}
Пример
Давайте проверим статус-код исключения через атрибут
code:
from werkzeug.exceptions import UnprocessableEntity
exc = UnprocessableEntity('bad data')
print(exc.code)
print(exc.name)
print(exc.description)
Результат выполнения кода:
422
'Unprocessable Entity'
'bad data'
Смотрите также
-
класс
HTTPException,
от которого наследуется исключение -
метод
get_response,
который строит ответ по исключению -
атрибут
code,
который хранит статус-код ошибки -
атрибут
description,
который хранит описание ошибки