2010-02-03 5 views
37

에서 null null을 반환합니다. /Resource/Id을 찾고 그 리소스가 존재하지 않는다면, 나는 항상 404가 적절한 응답이지만 그래도 없었습니다. 그러나, 저지 처리기에서 null을 반환하면 "204 No Content"가 반환됩니다. 나는 둘 중 하나와 함께 일할 가능성이 있지만, 이것에 대한 다른 생각이 궁금합니다.RESTful 리소스를 찾을 수 없습니다. 404 또는 204? 뉴저지는 핸들러

다음 질문에 답하십시오. Jersey가 404를 반환하게하려면 예외를 throw해야합니다.

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

리소스가 비어있는 경우 실제로 null이 반환됩니다. 그러면 204가 올바른 응답 코드가됩니다. –

+0

@MichaelMior 조금 혼란 스럽네요. "null"이 아니므로 객체를 찾을 수 없습니다. 빈 배열은 내용 없음으로 간주 될 수 있지만 null은 그것이 존재하지 않는다는 것을 의미합니다. –

+0

@RajaAnbazhagan 그건 정말 당신의 응용 프로그램에 따라 다릅니다. –

답변

46

2로 시작하는 코드가 성공적으로 호출과 실패한 사람을위한 4하다는 HTTP Code Definition 상태.

  • 당신이 도착하면 그냥 (당신이 POST를 할 경우 기대 또는 아무것도를 반환 할 필요가 없다 전화 PUT 보통) 당신이 얻을

  • 을 반환 아무 것도 없음을 보여줍니다 (204) 404는 호출이 실패 했으므로 아무 것도 반환하지 않는다고 말합니다.

상황에 따라 204가 적절합니다. 발신자에게 그가 잘못된 전화를 걸었다 고 말하고 싶을 것입니다.

+10

201/202 (created/accepted)는 빈 PUT/POST 응답에 더 적합하다고 말할 수 있습니다. –

관련 문제