2012-05-24 15 views
20

は、だから私は、REST APIのPOSTは、私が返すべきか不足しているリソースと必要なフィールドを作成するために作られのHttpステータスコード400対412

を開発していますか?

400 - 不正な要求

OR

412 - 前提条件は

を失敗し、なぜ?

答えて

28

使用400間違っている要求パラメータの場合。 If-*要求ヘッダーの1つIf-Modified-SinceIf-Matchのような場合などは間違っている、412を使用してください。

なぜですか?これはRFCの言うところのものです。例えばIf-Match仕様のこの抜粋を参照してください:

は、エンティティタグが一致のいずれも、または「*」が与えられ、何の現在のエンティティが存在しない場合は、サーバは要求されたメソッドを実行しないてはならない場合があり、412を返さなければなりません(Precondition Failed)応答が返されます。この動作は、PUTなどの更新メソッドが、クライアントが最後に取得した後に変更されたリソースを変更しないようにする場合に、最も便利です。

+1

また、400の形式の間違った構文のためにリクエストを処理できなかったことも記載されています。 – Rob

+1

このページは本当に助けになりました - http://odino.org/don-t-rape-http-if-none-match-the- 412-http-status-code/- コンテキストの 'PUT'リクエストを使用すると、特定のステータスコードを乱用するのはいつでも簡単なので、それが何であるかを理解しやすくなりました。 – Charlie

12

412は、サーバーがクライアントによって指定された条件を満たさない場合に使用されます。

あなたのケースでは、あなたはそれだけで不正な要求である400を使用する必要があります。

は、事前条件ヘッダ上のいくつかのexplainationのために、このlinkを参照してください。

一般的に、Etagヘッダーは、HTTPヘッダーのリソース を表す文字列です。 If-Matchが の前提条件のHTTPヘッダーであるリソースを要求します。送信したコードが と一致しない場合は、412が送信されます。

If-None-Matchは、 Etagがクライアントから送信されたものと異なる場合にのみ、サーバーが完全な応答を処理するように指示します。

+0

なぜdownvote?答えは間違っていますか? – nunespascal

+4

誰かが悪い一日を過ごしたと思う。それを無視して、システムにその仕事をさせてください:) – BalusC

+0

それをバランスさせるためにupvoteを持ってください。 –

3

ステータスコード422を使用できます。希望しない場合は、400は正常です。

関連する問題