2017-06-29 14 views
1

新しいメッセージの作成をサポートするエンドポイントがあるとします。ユーザーがボタンを2回押す(またはフロントエンドのアプリが奇妙に動作する)場合、バックエンドで同じメッセージを2回作成することは避けています。Jsonapi重複コンテンツ作成回避のHTTPステータスコード

現在、重複しているアクションのために、私のサーバーは、以前に作成されたリソースURLを指し示す303を参照して応答しています。しかし、私はまた、302を使用することができます参照してください参照してください。どちらがより適切だと思われますか?

重複回避戦略が(任命のために私たちはPOSTさ任命は、既存の1の1時間以内であるかどうかをチェックするなど)、より複雑になることに注意してください

答えて

1

HTTPステータスコード409:競合を使用することをお勧めします。

1

ステータスコードの3XXファミリは、一般的に使用されていますクライアントは、要求を完了するためにリダイレクトなどの追加アクションを実行する必要があります。より一般的には、ステータスコードは、どのような行動を取る必要があるかをクライアントに伝え、要求に関する必要な情報をクライアントに提供します。

一般的に、これらの種類の「不良」リクエスト(重複によって失敗した繰り返しリクエストなど)では、クライアントにリクエストに問題があったことを示す400のステータスコードが返され、処理されませんでした。あなたはより正確に問題を伝えるために応答を使うことができます。

また、クライアントからのリクエストが「火災と忘れている」場合は、重複のケースを処理し、クライアントからそれ以上の動作が必要でない限り、200応答。これは、クライアントに「リクエストが受信され、適切に処理されたこと、何もする必要はありません」と伝えます。しかし、これはクライアントにエラーを示すものではなく、変更された動作を許可するものではないので、少し欺瞞的です。

+0

だから、400と一緒に行くと、最終的には重複しない元のコンテンツへのリンクを送信しますか?また、私はJsonapiを使用して追加のルールを提供しています...私は300が400と200の間の良い選択肢だと思っていました。私がpostmanでテストしているとき、300コードは自動的にリダイレクトURLに再生され、私はこれが自動的にHTTP層によって行われるか、それがjavascriptで簡単に検出できる何かであるかどうか疑問に思っています... –

関連する問題