Что означает "семантические ошибки" или "семантически ошибочные" в 422 ошибках?

Я просматриваю расширенный учебник по Ruby on Rails, связанному с безопасностью, и в нем говорится о 422 HTTP-ответах как "отправленный клиентом запрос был правильно сформирован, но семантически неверен". Я также видел последнюю часть, представленную как "семантические ошибки" или "семантически ошибочные".

В приведенном примере это произошло из-за того, что Rails проверил токен подлинности, но я чувствую, что в ответе HTTP гораздо больше.

Я был бы особенно благодарен за каноническое определение от установленного члена сообщества относительно того, что означает "семантически неверный / ошибки / ошибочный". Какое общее правило делает запрос правильно сформированным, но не семантически действительным?

1 ответ

Решение

422 (непроцессируемый объект) код состояния дается, чтобы указать, что сервер понял запрос, но не смог обработать логику.

Его можно использовать для указания таких вещей, как проблемы логики (например, вы запросили недопустимый диапазон дат для фильтрации) и проблемы проверки (например, вы не указали заголовок - что необходимо). "Семантическая ошибка" в данном случае просто означает "логическая ошибка".

Это отличает его от таких вещей, как отсутствие разрешений (401 или же 403 более уместно), а также из общего 400 статус, который может указывать на то, что сервер не смог понять запрос (т. е. это был некорректный запрос).

Я получил именно эту семантическую ошибку при размещении ресурсов в базе данных через почтальона.

После тщательного изучения отправляемой полезной нагрузки я обнаружил, что полезная нагрузка Json имеет неправильный формат, ожидаемый схемой базы данных. Например, у меня есть одно значение как строка вместо массива строк в моей полезной нагрузке. Позже он был успешно отправлен с 201 ответом.

Другие вопросы по тегам