2010-02-03 103 views
37

如果您正在尋找/Resource/Id並且該資源不存在,我始終認爲404是適當的響應。但是,當從澤西島處理員返回null時,我收回「204無內容」。我可能會與任何一個人合作,但我很好奇其他人對此的看法。未找到RESTful資源。 404或204? Jersey返回204返回從處理程序返回的空

回答我自己的下一個問題。要讓澤西返回404,你必須拋出異常。

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

請注意,如果某個資源爲空,那實際上是要返回'null',那麼204將是正確的響應代碼。 – 2012-10-24 00:27:44

+0

@MichaelMior我有點困惑。是不是「空」的意思是沒有找到對象?一個空數組可以被認爲是No content,但是null意味着它不存在不是它嗎? – 2016-05-19 15:10:18

+0

@RajaAnbazhagan這真的取決於你的應用程序。 – 2016-05-22 01:58:55

回答

46

HTTP Code Definition指出,以2開頭的代碼是成功的呼叫和4不成功的。

  • 當你得到204它只是顯示你有什麼可以回報(通常是你或期望,如果你犯了一個POST PUT調用,不需要任何回報)

  • 當你一個404表示調用不成功,所以它不會返回任何東西。

在你的情況下,404是適當的,而不是204!因爲你可能想對打電話的人說他打錯了電話。

+10

我會說201/202(創建/接受)更適合於空PUT/POST響應。 – 2013-11-05 09:11:37