2017-08-03 6 views
0

私はPUTが冪等であることを知っていますが、どうすればプログラム的に保証できますか?完全に偶数のエンドポイントを作成するためには、どのような条件を満たす必要がありますか?冪等するRESTfulなサービスの観点から冪等のエンドポイントを作成する方法

+0

あなたは本当に_idempotent_を意味しますか、それとも_safe_(副作用なし)を意味しますか? Idempotentは、リソース上で_PUT_を呼び出すと同じ結果が得られることを意味します。リソースのコンテンツを新しいコンテンツで置き換えるだけで、結果は(リソースが存在する限り)(たとえば)HTTPステータスコード200となるはずです。 – andih

答えて

1

、操作(またはサービスコール)のため 、クライアントが同じ結果を生成 ながら繰り返し、同じ電話をかけることができます。言い換えれば、複数の同一の要求を行うことは、単一の要求を行うことと同じ効果を有する。偶数操作ではサーバー上で同じ結果が生成されますが(副作用がない場合は )、応答自体は同じではない可能性があります(例: 要求間で状態が変化する可能性があります)。

PUTは、要求本体で受信した新しい値でリソースを更新することになっています。したがって、サーバーが1回か2回送信された場合でも、結果は変更されません(たとえば、POSTとは異なり、競合エラーまたは複数のリソースが作成されるなど)。

+0

_idempotent_と_safe_には違いがあります。 _Idempotent_は、同じメソッドを必要なだけ頻繁に呼び出すことができ、同じ結果が得られることを意味し、リソースが変更されないことを意味するものではありません。最も良い例は_delete_メソッド/ http動詞です。 _POST_と_PATHCH_は_idempotent_と_safe_のいずれもありませんが、_PUT_と_DELETE_は_idempotent_ですが、* _safe_ではありません。 – andih

関連する問題