Состояние HTTP 200 (не 404) для результата пустого списка, возвращенного из конечной точки REST - PullRequest
3 голосов
/ 22 марта 2019

Пожалуйста, дайте мне примеры официальных спецификаций или доверенных рекомендаций, которые могут доказать моему бизнес-партнеру, что когда они возвращают пустой список из конечной точки REST, статус HTTP должен быть 200, а не 404. Для меня RFC-2616 очевиден, но также общий и не обсуждает случай пустого набора в результате. Я ищу веские аргументы для обсуждения.

С уважением, Камиль.

Ответы [ 3 ]

2 голосов
/ 22 марта 2019

Вы не найдете ничего "официального". REST - это просто архитектурный стиль, который можно применять к использованию HTTP.

Мое предположение: если ресурс идентифицирует некоторый контейнер, и этот контейнер существует, но пуст, он должен быть 200. Если контейнер не существует, 404. Таким образом, это в значительной степени зависит от определения ресурса.

2 голосов
/ 22 марта 2019

RFC 2616 является устаревшим документом.Текущая спецификация для кода состояния 404: RFC 7231 § 6.5.4 , что мне кажется достаточно ясным:

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

Если пустой список является допустимым представлением вашего ресурса (в отличие от сообщения об ошибке, дляпример), это исключает 404.

1 голос
/ 22 марта 2019

Пожалуйста, дайте мне примеры официальных спецификаций или доверенных рекомендаций, которые могут доказать моему деловому партнеру, что когда они возвращают пустой список из конечной точки REST, статус HTTP должен быть 200, а не 404. Для меня RFC-2616является очевидным, но также общим и не обсуждает случай пустого множества в результате.

Как отмечает @ Василий Фаронов , в RFC 7231 описывается семантика 200 OK ;«Вы запросили текущее представление ресурса, вот оно.»

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

Я ищу веские аргументы для обсуждения.

https://www.google.com/search?q=C71151CF-5D9B-412F-A0EF-EBE90782800C

ЕслиВы отправляете подобный запрос в Google, в ответ вы получите HTML-страницу, которая гласит:

Ваш поиск - C71151CF-5D9B-412F-A0EF-EBE90782800C - несопоставлять любые документы.

Строка состояния , возвращаемая сервером Google, вернула:

HTTP/2.0 200 OK

И все верно - в домене для передачи документов все было в порядке: наш запрос былразумно, сервер смог найти текущее представление запрашиваемого нами документа, нам был разрешен доступ к нему и т. д.

Информация, относящаяся к поисковому домену, находится в теле сообщения, которое сообщаетнам, что не было доступных документов, которые соответствуют тому, что мы искали.

...