2016-08-19 55 views
0

我希望由我的一個Web API返回的JSON響應包含業務強制註釋的最小字段集。在數據庫中發現錯誤數據的HTTP響應狀態代碼

哪個HTTP status code適合更好的情況下,一些壞的數據,不尊重合同在db上找到?

目前我們正在使用500,但我們可能需要改進它(也因爲在我們的服務前放置的清漆將500轉換爲503 Service Unavailable)。

例子:

{ 
    "id": "123", 
    "message": "500 - Exception during request processing. Cause: subtitles is a required field of class Movie and cannot be empty", 
    "_links": { 
    "self": { 
     "href": "/products/movies/123" 
    } 
    } 
} 

感謝

+0

我認爲如果數據不好,它應該是一個400錯誤的請求嗎? – mituw16

+0

檢出這些鏈接,它們可能有幫助:http://stackoverflow.com/questions/1434315/http-status-code-for-database-is-down和http://stackoverflow.com/questions/3290182/rest-http -status-codes-for-failed-validation-or-invalid-duplicate – d3r1ck

+0

沒有請求是正確的,它只是響應是「不好」,因爲在分貝上發現了相同的意外數據 –

回答

0

一個500內部服務器錯誤似乎是不夠的在這裏說實話的問題,本質上是從服務器端,它不反映任何錯誤從做客戶端。

1

400意味着BAD請求,但沒有什麼不好的請求,所以不要使用它。

500意味着服務器錯誤,因爲在意外發生的事情 - 代碼內爆,銀河系崩潰。不好的數據不是任何的原因。

你有一個壞數據的情況,所以你有很多方法可供選擇。

第一個問題是您打算如何處理不良數據?

  1. 你可以刪除它在這種情況下,你會返回一個204,這意味着該請求是不錯,但沒有數據發送回。我不會返回404沒有數據,因爲404意味着端點不存在,而不是數據不存在。

  2. 當某人修復它時,您可以將它從主數據庫移出到臨時數據中。

無論哪種方式,你不會返回錯誤的數據,客戶端不關心爲什麼數據不好。所有客戶都關心有沒有數據。 客戶爲什麼要關心您的數據缺少您認爲重要的字段?

您可以採取另一種方法並返回您擁有的數據。底線:決定你如何處理不良數據,不要對客戶端承擔任何責任。

相關問題