2013-11-27 29 views

回答

1

簡而言之:不可以。您的API應該是「用戶友好的」,這意味着,如果出現錯誤,應該以用戶可以找出問題的方式返回。返回404就好像在說服務沒有被發現,這是不正確的。響應應該是403 - 可能是因爲具有客戶端試圖訪問的ID的資源屬於不同的客戶端!

此外,響應應該包含客戶端可以解析和分析的錯誤消息/代碼(在主體中)。

+0

400如果請求在語法上是正確的,400感覺像是一個奇怪的選擇:調用者爲'id'提供了正確的類型,但值無法正確解析。 422 /不可處理的實體是否足夠使用? – ehdv

+0

@ehdv 422意味着語義錯誤。看起來像403會更適合。 – alfasin

+0

語義錯誤在這種情況下意味着什麼? – ehdv

3

我會建議使用HTTP 400(錯誤請求)。

請參閱http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1。可以將400解釋爲客戶沒有正確形成請求的一般性指示。

人們也可以提出一個案例來回復500響應。如果客戶認爲Bar引用是有效的,那麼服務器未能處理這個請求可能被視爲例外。例如,如果引用有效,則會發生這種情況,但不同的客戶端將其刪除。在這種情況下,第一個客戶端沒有做錯任何事情。

+1

只有當處理是由於服務器本身的錯誤配置(即內部服務器錯誤),而不是客戶端故障導致500響應的情況才適合。如果客戶端發送錯誤的數據,則需要400系列的響應代碼。 –

3

我認爲這取決於ID是否在URL中。該URL是資源的地址,如果該ID在URL中,並且沒有該ID存在的項目,或者根本沒有提供它,則該URL無效,因此不會找到資源,所以這是一個404.

但是,如果ID是而不是而不是來自POST請求的數據,並且該URL是資源的有效地址,則應返回400錯誤請求。