31

だから私はRestAPIを開発しています

リソースを作成するためにPOSTが行われ、必須フィールドが欠落している場合、何を返す必要がありますか?

400不正な要求

また

412-前提条件が失敗しました

なぜ?

4

3 に答える 3

42

リクエストパラメータが間違っている場合は400を使用します。、などのIf-*リクエストヘッダーの1つが間違っている場合は、412を使用します。If-MatchIf-Modified-Since

なんで?それはRFCが言っていることです。たとえば、このIf-Match仕様の抜粋を参照してください。

一致するエンティティタグがない場合、または「*」が指定されていて現在のエンティティが存在しない場合、サーバーは要求されたメソッドを実行してはならず、412(前提条件に失敗)応答を返さなければなりません。この動作は、クライアントがPUTなどの更新メソッドが、クライアントが最後にリソースを取得してから変更されたリソースを変更しないようにする場合に最も役立ちます。

于 2012-05-24T03:50:58.690 に答える
18

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

あなたの場合、あなたは400を使うべきです。それはただ悪い要求です。

前提条件ヘッダーの説明については、このリンクを参照してください。

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

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

于 2012-05-24T03:51:53.147 に答える
4

ステータスコード422を使用できます。使用したくない場合は、400で十分です。

于 2013-03-21T07:13:34.370 に答える