2012-02-04 51 views
15

有關在JSON Web服務中發送錯誤響應的最佳做法是什麼?我已經看到了它的幾種做法,並想知道在這些選擇中是否有任何商定的標準或最佳做法。在JSON Web服務中發送錯誤響應的最佳做法是什麼?

我已經看到它完成,其中響應包括成功或失敗的指示以及要返回的數據或合適的錯誤消息,例如,

[{'success':true, 'data':{...}] 
[{'success':false, 'data':{'message':'error'}] 

但是我也看到例子,其中JSON對象只包括數據,並且該服務使用正常HTTP錯誤代碼,以指示一個問題(403,404,500等)。 (這是Twitter API的做法。)

有沒有「正確」的方式來做到這一點,還是僅僅是一個風格問題?後一種方法更「RESTful」嗎?

回答

17

在「RESTful」方法中,主錯誤響應由相應的狀態代碼(4xx/5xx)指示。

您的消息應該提供關於如何從錯誤中恢復的附加的,特定於應用程序的提示。這可能包括髮生錯誤的人類可讀表示或某種更技術指標(即提供Exception類名稱)。

爲了保持通用性,請爲您的錯誤消息提供修復語法。這允許您在打破客戶端的情況下引入新的錯誤消息。

+4

爲此,我今天碰到了這個:http://tools.ietf.org/html/draft-pbryan-http-json-resource-01 – 2012-02-05 19:56:37

3

使用適當的HTTP代碼,並把你現在稱之爲「數據」的內容作爲響應的主體。這是讓API用戶意識到錯誤的唯一正確的RESTful方法。

只是這樣做不會使您的API RESTful,但不這樣做肯定會使您的API RESTful。

錯誤中使用良好的HTTP狀態碼的示例在Dropbox API reference中,查看每種方法下的「錯誤」部分,它們解釋您應該期望哪些錯誤代碼以及該特定項中的相關含義方法。

相關問題