Ресурс RESTful не найден.404 или 204?Джерси возвращает 204 при нулевом возвращении из обработчика - PullRequest
40 голосов
/ 04 февраля 2010

Если вы ищете /Resource/Id, а этот ресурс не существует, я всегда считал, что 404 был подходящим ответом.Однако, возвращая null из обработчика Джерси, я получаю «204 Нет содержимого».Скорее всего, я могу работать с любым из них, но мне любопытно, что другие думают об этом.

Чтобы ответить на мой следующий вопрос. Чтобы Джерси вернул 404, вы должны выбросить исключение.

    if (a == null)
        throw new WebApplicationException(404);

1 Ответ

50 голосов
/ 04 февраля 2010

В определении HTTP-кода указано, что коды, начинающиеся с 2, предназначены для успешных вызовов, а 4 - для неудачных.

  • Когда вы получаете 204, оно просто показываетвам, что возвращать нечего (обычно вы ожидаете, если вы делаете вызов POST или PUT, который не должен ничего возвращать)

  • Когда вы получаете 404, он говорит, что вызов былнеудачно, поэтому ничего не вернется.

В вашей ситуации уместно 404, а не 204!Поскольку вы, вероятно, хотите сказать звонящему, что он сделал неправильный вызов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...