Выбор ответа Middle Коды ответа обновлено

400 или 422

Вопрос

На POST /users с телом {"email": "not-an-email", "age": -5} (JSON синтаксически верный) API вернуло 422. Как это трактовать?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Формат понят, но данные не прошли валидацию по смыслу: допустимый ответ. 422 Unprocessable Content: синтаксис верный, но данные не проходят валидацию.

Варианты ответа

  1. Ошибка: на любые неверные данные стандарт требует 400, а 422 только для WebDAV
  2. Формат понят, но данные не прошли валидацию по смыслу: допустимый ответправильный ответ
  3. Сервер упал при обработке данных, это аналог 500 для неверных полей
  4. Ресурс с таким email уже существует, 422 сообщает о дубликате

Разбор

422 Unprocessable Content: синтаксис верный, но данные не проходят валидацию. 400 Bad Request шире: битый JSON, не тот тип, нет обязательного поля. Многие API отдают 400 на всё, другие делят 400/422, оба подхода допустимы, главное единообразие и понятное тело ошибки. «Уже существует» это обычно 409 Conflict, а 5xx означает сбой сервера.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.