Подтвердить что ты не робот

Ресурс RESTful не найден. 404 или 204? Джерси возвращает 204 по нулевому возврату из обработчика

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

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

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

Ответ 1

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

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

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

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