Теперь, если вы нажмете GET / orders? OrderName = DEF, я отвечу, что поиск не поддерживается.
Каким должен быть код состояния HTTP в этом случае?
404 Not Found
Код состояния 404 (Not Found) указывает, что исходный сервер не нашел текущего представления для целевого ресурса или не желает раскрывать, что он существует.
Другими словами, код состояния конкретно определяет целевой uri как проблемную c часть запроса.
5xx - это вне таблицы, потому что это проблема, которую можно решить, изменив запрос.
Невозможно отправить 404, поскольку данные существуют.
Конечно, вы можете .
Важно понимать, что коды состояния HTTP являются частью транспортных документов по сетевому домену, а не вашего домена приложения.
При транспортировке документов через сетевой домен 404 означает "запрошенный вами идентификатор не имеет связанного с ним документа". И это именно тот случай, который у вас есть (с точки зрения HTTP-компонента общего назначения).
Единый интерфейс HTTP - это интерфейс хранилища документов; передать ключ, получить документ, сохраненный с использованием этого ключа. Когда мы сообщаем об ошибках, мы сообщаем о них, используя ту же семантику, что и хранилище документов. KEY_NOT_FOUND в HTTP - это 404.
Могу ли я отправить 404 с сообщением типа - «Преднамеренно не поддерживается» или что-то в этом роде?
Да, вы можете это сделать .
Механизм описан в RF C 7231
Класс кода состояния 4xx (ошибка клиента) указывает на то, что клиент, похоже, совершил ошибку. . За исключением ответа на запрос HEAD, серверу СЛЕДУЕТ отправить представление, содержащее объяснение ситуации с ошибкой и того, является ли это временным или постоянным условием.
Другими словами, вы указываете в ответе тело описание проблемы. Код состояния 404 - это метаданные , который сообщает компонентам общего назначения (например, браузеру или веб-кешу), что сущность, включенная в ответ, является ошибкой, а НЕ представлением ресурса.
Вы можете, например, объяснить ситуацию с ошибкой, используя подробный документ .