RESTとSOAPを比較することはできません。RESTはアーキテクチャスタイルであり、SOAPはプロトコルです。
残念ながら、RESTは、RESTful HTTPサービスの同義語として口語的に使用されるようになりました。これは、HTTPを(アプリケーション)プロトコルとして使用するRESTスタイルのアーキテクチャの実現を意味します。
RESTは次の原則(制約と要素)に基づいています(括弧内はRESTful HTTPでの実現)[1]。
- ステートレス(HTTPはステートレスプロトコルです)
- リソース(URIで識別)
- 統一インターフェース(HTTPメソッド)
- 表現(MIME-TYPE)
- HATEOS(ハイパーリンク)
- キャッシュ(HTTPキャッシュ)
一方、多くの人々は、W3C Webサービスアーキテクチャの一部であるWSDLおよびSOAPに基づくWebサービスをSOAPと言っていることを意味します[2]。
- SOAPは、情報を交換するためのプロトコルとして使用されます(基本的には、メソッド名、パラメーター、戻り値、データ型など)。
- WSDL Webサービスを記述するインターフェース定義言語。
SOAP *の現在の意味は何ですか?
SOAPはW3C標準であり、W3C Webサービスの情報交換形式として使用されます。これらのWebサービスは、特に2008年(±3年)前後のSOA(サービス指向アーキテクチャ)の誇大広告の時代に-そして(残念なことに)まだエンタープライズアプリケーションに主に実装されています。
これにはいくつかの理由があります。当時、RESTful HTTPはあまり知られておらず、誤解されていました。残念ながら、まだ誤解されているので、他の答えを見てください
「[...] RESTはSOAP [...]よりもはるかに制限されています。」
「RESTの主な目的は、インターネット上のリソースを表すことです[...]。」
さらに、SOAP(およびWSDL)は、Webサービスを実装するためのさらに多くの標準を提供するW3C Webサービスプロトコルスタックの一部です。
人々はまだ新しいSOAPベースのAPIを開発していますか、それとも今はほとんどレガシーですか?
はい、そうです。SOAPを使用している将来のシステムも存在します(少なくともエンタープライズシステムでは、ほとんどがドアの向こう側にあります)。しかし、大多数は最近、ある種の「休息」をしようとしています。
SOAPとRESTのこの違いについて間違っている場合、誰かが私を修正してくれますか?
RESTがデータ転送のためのより柔軟なステートレスアーキテクチャであると言うのは良い説明ではありません。単に話されるRESTは、特定の制約と要素を持つアーキテクチャスタイルです。一方、SOAPは情報交換プロトコルです。
私がすでに書いたように、それらを比較することはできません。ただし、RESTful HTTP WebサービスとSOAP / WSDL Webサービスを比較できます。