Так почему же люди продолжают использовать код ответа HTTP с ошибкой бизнес-логики?
При создании приложений, которые следуют архитектурному стилю REST по протоколу HTTP, вы адаптируете домен своего приложения к ресурсам , который является центральным элементом архитектуры REST.
Сервер предоставляет набор URL-адресов для определения местоположения ресурсов, и их состоянием можно управлять с помощью HTTP-глаголов и представлений, таких как JSON и / или XML. И HTTP-коды состояния используются для информирования клиента о состоянии операции. Вводящий в заблуждение код состояния будет содержать неверную информацию о состоянии запроса.
RFC 7231 определяет классы кодов состояния :
1xx
(информационный): запрос получен, продолжение процесса
2xx
(Успешно): запрос был успешно получен, понят и принят
3xx
(Перенаправление): для выполнения запроса необходимо предпринять дальнейшие действия
4xx
(ошибка клиента): запрос содержит неверный синтаксис или не может быть выполнен
5xx
(ошибка сервера): серверу не удалось выполнить явно действительный запрос
Например, если запрос не выполнен из-за клиентской ошибки (например, неверно сформированный запрос или неверные данные были предоставлены в полезной нагрузке), возвращается код состояния 2xx
или 5xx
вводит в заблуждение здесь. Код состояния 4xx
подходит для выражения причины ошибки.
Есть ли ситуации, когда необходимо использовать HTTP-ответ с ошибкой бизнес-логики?
Некоторые состояния, такие как 409
и 422
, могут использоваться для представления ошибок бизнес-логики.
Мне проще взглянуть в тело ответа на ошибку бизнес-логики и обработать ее.
Это правда, что HTTP-кодов состояния иногда недостаточно, чтобы передать достаточно информации об ошибке, чтобы быть полезным. Но RFC 7807 был создан, чтобы восполнить этот пробел: он определяет простые документы JSON и XML для указания проблем.