2013-06-05 183 views
11

我正在尋找一個正確的狀態代碼,通過api發送一次故障。通用故障的HTTP狀態代碼

確切的情況是無法將產品添加到購物車。

失敗可能發生的原因很多,但我想返回一個單一的http代碼。

哪個最好?

我一直在尋找他們,不能看到任何東西完全符合這裏的需求。

一些可能的失敗條件可能是:

Not enough stock to satisfy 
Stock limit reached for that particular product 
Product no longer available 
+0

您可能需要一個HTTP 400.請參閱http://stackoverflow.com/questions/1959947/whats-an-closed-http-status-code-to-return-by-a-rest-api-service-for -a-val – lreeder

+1

另外,請閱讀本IETF草案:http://www.ietf.org/id/draft-nottingham-http-problem-04.txt –

回答

11

如果是服務器錯誤,那麼它應該是500.如果是客戶端錯誤,使用400

很難比這更精確沒有看到URI以及你對它做了什麼。例如,如果「產品不再可用」是GET請求的結果,那麼它應該是404(未找到)。但是,如果它是POST請求,那麼它應該是200或202.

對於另外兩個,它們可能不是錯誤。可能是客戶端發送了正確的請求,但股票已被別人使用,在這種情況下,服務器應該返回409(衝突)。如果從一開始就要求過多的庫存,那麼它應該是200/202。

如果你只有一個代碼,只需使用400和200(見上)。

+0

我已更新示例失敗的問題。他們可能適合400更好,但它似乎仍然不正確 –

+0

@MartyWallace我更新了我的答案。 – imel96