Відповідно до наведеного нижче сценарію,
Скажімо, хтось робить запит на ваш сервер із даними, які є у правильному форматі, але це просто не "хороші" дані. Так, наприклад, уявіть, що хтось розмістив значення String в кінцевій точці API, яка очікувала значення String; але, значення рядка містило дані, які потрапили у чорний список (наприклад, заборона людям використовувати "пароль" як свій пароль). тоді код статусу може бути або 400, або 422?
Досі я б повернув "400 поганих запитів", що, на думку w3.org, означає:
Сервер не міг зрозуміти запит через неправильний синтаксис. Клієнт НЕ повинен повторювати запит без змін.
Цей опис не зовсім відповідає обставині; але якщо ви переходите до списку основних кодів статусу HTTP, визначених протоколом HTTP / 1.1, це, мабуть, найкраща ставка.
Однак нещодавно хтось із моєї команди Dev вказав [мені], що популярні API починають використовувати розширення HTTP, щоб отримати більш детальну інформацію зі своїми повідомленнями про помилки. Зокрема, багато API, наприклад Twitter і Recurly, використовують код статусу "422 Unprocessable Entity", як визначено в розширенні HTTP для WebDAV. Код статусу 422 HTTP повідомляє:
Код стану 422 (Unprocessable Entity) означає, що сервер розуміє тип вмісту об'єкта запиту (отже, код статусу 415 (непідтримуваний тип медіа) неприйнятний), і синтаксис об'єкта запиту є правильним (таким чином, 400 (неправильний запит) ) код статусу невідповідний), але не вдалося обробити містяться інструкцій. Наприклад, ця умова помилки може виникнути, якщо орган запиту XML містить добре сформовані (тобто синтаксично правильні), але семантично помилкові інструкції XML.
Повернувшись до нашого прикладу паролів зверху, цей код статусу 422 вважається набагато доречнішим. Сервер розуміє, що ви намагаєтесь зробити; і він розуміє дані, які ви надсилаєте; він просто не дозволить обробляти ці дані.