RESTful アーキテクチャでは、POST リクエストはSafeでもIdempotentでもありません。
error
現在、jQuery の ajax 呼び出しは、関数を使用して失敗をキャッチするように ajax 呼び出しを設定することで、失敗した要求を再試行し、オプションで呼び出しを再試行することができます (関連するtimeout
、tryCount
、retryAfter
などの設定と共にretryLimit
)。
GET 呼び出しを再試行することは問題ではありませんが (どちらも安全で冪等であるため)、POST 呼び出しを再試行するにはどうすればよいでしょうか?
たとえば、ajax POST を使用して新しいレコードを挿入するとします。
- クライアントで ajax POST 呼び出しが開始されます。
- 呼び出しはサーバーによって受信され、データベースが更新されます。
- サーバーは応答しますが、この応答はクライアントに配信されません。
- そのため、クライアントは失敗があったと想定し、呼び出しを再試行します。
- 呼び出しはサーバーによって再度受信され、別の変更が行われます。
- 等々...
このシナリオに対応する最善の方法は何でしょうか?