2015-07-10 125 views
0

我正在處理一個restful API後端,我們只使用json作爲內容類型。據我所知,有兩種方式執行錯誤響應:REST API錯誤返回,是否包含HTTP狀態代碼

  1. HTTP狀態碼始終爲200,返回的json應該包含錯誤代碼和錯誤消息。
  2. 將HTTP狀態碼視爲我們的API的一部分,我們可能會選擇HTTP錯誤碼(4XX)爲相應的錯誤狀態。我們可以在有效載荷中包含一個json文檔,以包含一個子代碼和一個描述性評論。

我想知道哪一個更適合寧靜的服務嗎?

+0

將您的代碼,您使用哪種技術或庫進行服務器通信?t – Gaurav

回答

1

一般來說,我不會主張總是返回了200元。有跡象表明,匹配普遍接受的狀態碼的故障情況。以上,有人提到403,當訪問被拒絕時,你提供了403。當事情真的向南時,500通常由web/app服務器發佈。如果找不到某個資源的記錄,則爲404。

所以,我對做主張:

  1. 要與至少200,403,404,500
  2. 提供您的JSON錯誤響應
  3. 爲詳細的錯誤信息儘可能文檔化每一個錯誤代碼您的API可能會提供 - HTTP狀態代碼和每個子條件錯誤
1

您需要同時使用兩者。

  1. HTTP狀態:使用此處理請求的狀態。例如,如果您查詢數據庫並且沒有找到任何條目,那麼您仍然會返回200.如果該用戶未被授權,則403,如果SQL連接數超過500,依此類推。

  2. API狀態:如果DB請求成功,你會發現沒有條目,包括在你的JSON {status: NO_ENTRIES }{ status: DEPRECATED_API }的自定義字段。在這些情況下,響應代碼仍然是200

+0

總是返回H TTP狀態爲200,但是使用API​​狀態來表示相應的錯誤?我看到很多公司都這麼做。 – realli

+0

我給了你一個例子。如果您的服務器遇到服務器錯誤,請說內存不足或上述內容,您應該在json回覆中拋出500,Ann仍然可以添加一條錯誤消息,告訴客戶端。 – prakharsingh95

相關問題