Выбор ответа Middle Коды ответа обновлено
400 или 422
Вопрос
На POST /users с телом {"email": "not-an-email", "age": -5} (JSON синтаксически верный) API вернуло 422. Как это трактовать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Формат понят, но данные не прошли валидацию по смыслу: допустимый ответ. 422 Unprocessable Content: синтаксис верный, но данные не проходят валидацию.
Варианты ответа
- Ошибка: на любые неверные данные стандарт требует 400, а 422 только для WebDAV
- Формат понят, но данные не прошли валидацию по смыслу: допустимый ответправильный ответ
- Сервер упал при обработке данных, это аналог 500 для неверных полей
- Ресурс с таким email уже существует, 422 сообщает о дубликате
Разбор
422 Unprocessable Content: синтаксис верный, но данные не проходят валидацию. 400 Bad Request шире: битый JSON, не тот тип, нет обязательного поля. Многие API отдают 400 на всё, другие делят 400/422, оба подхода допустимы, главное единообразие и понятное тело ошибки. «Уже существует» это обычно 409 Conflict, а 5xx означает сбой сервера.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.