2013-06-05 23 views
11

APIを介して正常なエラーを送信するための正しいステータスコードを探しています。HTTP一般的なエラーのステータスコード

厳密なシナリオでは、ショッピングカートに商品を追加できません。

多くの理由でエラーが発生する可能性がありますが、1つの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-appropriate-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にする必要があります。

その他の2つの場合、エラーではない可能性があります。クライアントが正しいリクエストを送信したが、在庫が他の誰かによって消費された可能性があります。この場合、サーバーは409(競合)を返す必要があります。リクエストが最初から多すぎた場合は、200/202にする必要があります。

コードが1つしかなければならない場合は、400と200を使用してください(上記参照)。

+0

例の失敗で質問を更新しました。彼らは400とよくフィットするかもしれませんが、それでも正しくないようです –

+0

@ MartyWallace私は私の答えを更新しました。 – imel96

関連する問題