Подтвердить что ты не робот

Какой наиболее подходящий код состояния HTTP для страницы с ошибкой "элемент не найден"

Мне любопытно, какой наиболее подходящий код статуса HTTP для страницы "элемент не существует".

Если сама страница не существует, я, очевидно, буду использовать 404. Однако на одной из моих страниц есть аргумент userid (это страница "редактировать пользователя" ), и если ни один пользователь с данным ID пользователя существует Я показываю страницу с ошибкой, но я также хотел бы отправить заголовок статуса 4xx (так как "200 OK" действительно не подходит).

Я думаю, что 404 будет нормально, так как он "не найден", а не "файл не найден", но мне интересно, есть ли лучший код для этого случая.

4b9b3361

Ответ 1

Слишком умный с ошибками код ошибки HTTP-кода - это плохая идея. Браузеры иногда реагируют бесполезными способами, которые запутывают ситуацию. Stick с 404.

Ответ 2

Код возврата 404 на самом деле означает "ресурс не найден" и применяется к любому объекту, для которого был выполнен запрос, но не выполнен. Таким образом, он работает одинаково - хорошо для страниц, подразделов страниц и любого элемента, который существует на странице, которая имеет конкретный запрос для рендеринга.

Итак, 404 - это правильный код для использования в этом сценарии. Обратите внимание, что это не относится к "серверу не найден", это другая ситуация, когда запрос был выпущен, но не ответил вообще, в отличие от ответа, но без запроса ресурса.

Ответ 4

Это зависит, если userid является идентификатором ресурса или дополнительным параметром. Если это так, тогда нормально возвращать 404, если вы не можете вернуть другой код, например

400 (bad request) ‐ indicates a bad request
или
412 (Precondition Failed) e.g. conflict by performing conditional update

Дополнительная информация в бесплатной InfoQ Explores: REST.

Ответ 5

Я столкнулся с той же проблемой, и выясняется, что использование 204 работает для меня.