転送メカニズムとしてHTTPを使用する場合、SOAPはHTTPPOSTリクエストを介して送信されます。HTTP POSTはべき等ではないため、HTTPレベルでキャッシュされません。
問題のリクエストがべき等のリクエスト(GET、PUT、および(理論的には)DELETE)である場合、RESTはキャッシュされる可能性があります。POSTリクエストは引き続きキャッシュされません。とはいえ、これを使って多くの作業を行うことを計画している場合は、キャッシュがまだ有効かどうかをチェックする方法を調べる必要があります。特に、ETagヘッダーは、値を計算するための安価な方法があれば、キャッシュを実装するための優れた方法になります。
慣例により、RESTがURL内のすべてのパラメーターをエンコードしているからですか?GET呼び出しはパラメーターを持つ本体も持つことができるので、RESTに制限されていないことは理解していますが、そうするとキャッシュメカニズムが機能しませんか?
RESTは、URLでリクエストパラメータをエンコードする方法について特定のメカニズムを規定していません。推奨されるのは、クライアントがURL合成を行わないことです。サーバーにすべてのURL作成を行わせます(パス内への埋め込みやクエリパラメーターなど、必要なメカニズムによって)。絶対にすべきではないのは、クライアントがサーバーに本文を送信するGETを使用することです。どのキャッシュもそれを失う可能性があります。代わりに、そのリクエストがリソースの単純なフェッチに対応していない場合は、その複雑なドキュメントをサーバーにPOSTまたはPUTし、操作の結果を別のステージとして取得します。
操作の結果を別の複雑なドキュメントとして返す複雑なドキュメントのPOSTは、SOAPのエンコード方法とほぼ同じです。それをしたい場合は、SOAPを直接使用することをお勧めします。これは、多くの言語ではるかに成熟したツールを備えているためです。そのようにRESTを実行したい場合は、おそらくどこかで間違っているでしょう…</ p>