Какой HTTP-код использовать для пустого подресурса в REST API? - программирование
Подтвердить что ты не робот

Какой HTTP-код использовать для пустого подресурса в REST API?

Скажем, у меня есть ресурс articles at /articles.

В этих статьях могут быть связанные статьи, поэтому я получаю их с помощью GETting /articles/{id}/related.

Что я должен вернуть, нет связанных статей?

Я могу думать:

  • 404 Not Found, возможно, с пустой коллекцией
  • 204 No Content
  • 200 Found с пустой коллекцией

Какие-нибудь советы? (просьба дать аргументы)

Кстати, это может относиться к разбивке на страницы. Если я запрошу страницу 3 из 2, страница 3 вернет пустой набор, если он будет 404?

4b9b3361

Ответ 1

404 - это не то, что вы ищете. Это условие ошибка. Ваш случай не является ошибкой. Клиент в настоящее время не знает, есть ли связанные статьи и хочет знать. Это не ошибка.

204 тоже не подходит. RFC 2616 гласит:

  The server has fulfilled the request but does not need to return an
  entity-body, and might want to return updated metainformation. The
  response MAY include new or updated metainformation in the form of
  entity-headers, which if present SHOULD be associated with the
  requested variant.

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

200 с пустой коллекцией, с другой стороны, удовлетворит ваши потребности.

Ответ 2

Я бы не использовал 404, который сказал бы клиенту, что "я не могу сказать вам, есть ли выпущенные статьи". Было бы уместно, если данный идентификатор {id} не распознается вообще. То, что вы хотите, - это положительный ответ, чтобы рассказать клиенту, да, хороший вопрос, и вот (пустой) список связанных статей.

204 тоже не подходит, по смежным причинам. Он указал, что ответа нет, который по-прежнему отличается от ответа, который есть, но это пустой список. Его описание имеет смысл для POST, чем для a GET.

200 с пустым списком в порядке.

Ответ 3

Возвращает 200 с пустым массивом.