Open3
POSTの冪等性に関する議論
RESTfulにおける冪等性として、複数回同一リクエストを送ったとしてもリソースの状態が変わらないことを指している。
その中で、POSTは冪等性がないメソッドとして考えられることが多い。
アプリケーションの開発として、リソースが重複作成は避けるような機能要件は多くある。
これに対して冪等性があるPOST処理をサーバーサイド側で実装するのか、それとも重複の確認などはクライアント側で制御するのかどのように対応するのが設計として望ましいのかが気になる。
サーバーサイドでの対応事例(POSTに冪等性をもたせる)
POSTのURIにリソースIDを加える
/api/docs/${docType}/${docId}
条件として
- IDが重複しない
- 重複した場合のエラーハンドリングをすること
POSTで送られたボディを元にサーバーサイド側で制御
IETF上でHTTPに冪等性をもたせるためのidempoten key Headerの導入などが提案されていた。
RFC化はまだできておらず、既に実装した各企業でも異なっていそう。