Какой HTTP-код использовать для пустого подресурса в REST API?
Скажем, у меня есть ресурс articles
at /articles
.
В этих статьях могут быть связанные статьи, поэтому я получаю их с помощью GETting /articles/{id}/related
.
Что я должен вернуть, нет связанных статей?
Я могу думать:
-
404 Not Found
, возможно, с пустой коллекцией
-
204 No Content
-
200 Found
с пустой коллекцией
Какие-нибудь советы? (просьба дать аргументы)
Кстати, это может относиться к разбивке на страницы. Если я запрошу страницу 3 из 2, страница 3 вернет пустой набор, если он будет 404
?
Ответы
Ответ 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 с пустым массивом.