Код состояния HTTP, когда объект не найден с идентификатором, который передается через тело запроса

Я объясню мои сомнения, приведя пример.

Предположим, я проектирую конечную точку POST за student ресурс и как часть конечной точки POST я хочу teacher uuid для передачи (кроме других деталей), которое является обязательным полем. Так что я могу связать student к teacher, Теперь, если teacher ресурс с данным uuid нет в моей БД то, что я должен бросить:

400 (Bad request)
404 (Not found).

Я думаю 400 будет правильной вещью.

Если бы у меня был запрос, как показано ниже, я бы бросил 404, как

GET /xyy/teachers/{uuid of a teacher},

Поправь меня, если я ошибаюсь. Благодарю.

2 ответа

Я бы предпочел 404 потому что запрошенный вами ресурс недоступен. Если вы посмотрите на спецификации w3.org, они говорят, что 400

Сервер не может понять запрос из-за неправильного синтаксиса. Клиент НЕ ДОЛЖЕН повторять запрос без изменений.

Поскольку ваш синтаксис не искажен, он звучит как классический 404 для меня.

На самом деле это хороший вопрос. Как отмечали другие, ни (Плохой запрос), ни (Не найдено) не кажутся идеальными для такой ситуации.

(Плохой запрос) обычно используется, чтобы сигнализировать о неправильном синтаксисе или неверно сформированном запросе, что воспринимается как ошибка клиента. В вашей ситуации запрос полностью действителен и соответствует ожиданиям сервера.
  • HTTP (Not Found) обычно возвращается, когда целевой ресурс не существует или когда сервер не хочет раскрывать, что он существует. В вашем сценарии можно утверждать, что «целевой ресурс» ( student
  • ) не является причиной проблемы и, следовательно, 404 может быть семантически запутанным.

    В качестве альтернативы позвольте мне предложить <tcodeid="411744"></tcodeid="411744">

    (Unprocessable Entity) ответ, часть расширений WebDAV. Это означало охватить случаи, когда сервер ...

    [...] понимает тип содержимого объекта запроса, и синтаксис объекта запроса правильный, но он не смог обработать содержащиеся инструкции.

    Это действительно хорошо подходит для вашей проблемы.

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