1

Допустим, у меня одностраничное веб-приложение со списком элементов, в котором пользователь может щелкнуть элемент, чтобы просмотреть дополнительную информацию об этом. Информация о фактическом пункте загружается асинхронно, используя запрос AJAX GET на URL http://www.example.com/item/[id] и отображается при загрузке.RESTful ajax - какой код статуса HTTP для "item not found"?

Вопрос в том, что делать, если элемент с данным идентификатором не существует? Прямо сейчас запрос возвращает код состояния 200, но фактический контент указывает, что элемент не существует. Это похоже на плохую идею, поэтому я хотел, чтобы она возвращала код состояния, который указывал бы, что запрос не прошел в определенном смысле, поскольку элемент не существует (он также, например, позволит мне поймать его в ошибке обработчик в функции ajax jQuery).

Это хорошая практика (возврат кода состояния 200 только в том случае, если элемент действительно существует в базе данных), и если да, то какой код состояния лучше всего использовать в этой ситуации?

ответ

4

Да, вы правы, хотите использовать код состояния отказа, а не 200 OK. 404 Not Found был бы идеальным в этом случае. (Также есть 410 ушел за товар, который существует для.)

Link to spec или Google «Коды статуса HTTP» для гораздо большего объема ресурсов.

+0

Спасибо, так что, если я правильно понял, если элемент не существует Я использую 404, так как элемент с этим идентификатором может появиться (добавить) в какой-то момент и 410, если он удаляется (с пункта с этим идентификатором берется удаленный элемент и, следовательно, никогда не будет существовать в будущем)? – fstanis

+0

@fstanis Это похоже на суть, да. Хотя я видел, что услуги используют 404 для всех случаев (правильно или неправильно) – Shai

2

Да, это хорошая идея, чтобы вернуть код статуса 200 только в том случае, если ваш объект существует. Когда ваш элемент не существует, вы должны вернуть код ошибки 404.

More information here

Смежные вопросы