web-dev-qa-db-ja.com

SOAPとREST Webサービスですか?SOAP RESTfulですか?

MSDNマガジンから https://msdn.Microsoft.com/en-us/magazine/dd315413.aspx および https://msdn.Microsoft.com/en-us/magazine/ dd942839.aspx わかった

RESTfulエンドポイントがHTTPを使用してデータを要求される場合、使用されるHTTP動詞はGETです。

RESTを使用すると、HTTPキャッシングや、条件付きGETなど、サービスのスケーリングを支援する他の機能を利用できます。これらの手法の多くは、SOAP SOAPはHTTP経由でのみPOSTを使用するため。

ウィキペディアのページから http://en.wikipedia.org/wiki/Representational_state_transfer

RESTfulシステムは通常、常にではありませんが、Webページを取得してデータをリモートサーバーに送信するためにWebブラウザーで使用されるのと同じHTTP動詞(GET、POST、PUT、DELETEなど)とハイパーテキスト転送プロトコルで通信します。[

しかし、これは、REST HTTPを使用するアーキテクチャPOSTリソースからデータを取得するためのアーキテクチャに違反します?つまり、SOAPベースのWebサービスはRESTfulですか?

RESTfulとSOAPベースのWebサービスの間に他の違いはありますか?

12
user2330678

RESTはHTTP動詞を使用して、実行しようとしているアクションを明確にします。

「GET」リクエストは、ある場所でアイテムを返すようにサービスに要求しています。

「POST」リクエストは、ある場所に新しいエンティティを作成するようにサービスに要求しています(おそらく背後でDBに永続化されます)。

「PUT」リクエストは、ある場所にある既存のエンティティを更新するようにサービスに要求しています。

「DELETE」リクエストは、ある場所にある既存のエンティティを削除するようサービスに要求しています。

だから、「GET」のようなものに「POST」を実際に使用しても、REST APIを自分で呼び出すことはできません。

3
Bill Gregg

概念的には、サービスは非常に異なります。

SOAPはリモートプロシージャコール(RPC)に関するもので、メソッドをリモートで呼び出すように設計されています。クライアント上のサーバーメソッドのプロキシは、サーバーとの同期を維持する必要があります。一般に、モデルの同期を保つためにWSDLが使用されます。

SOAPは、多くのHTTP機能も無視します。既に述べたように、すべてにPOSTメソッドを使用します。また、独自のXMLデータ形式でデータをラップします。

RESTはURLを使用してリソースを参照します。リソース表現は任意の形式(json、xml、csv、binary、...)であり、HTTPコンテンツネゴシエーション(Accept *ヘッダー)を利用できます。 HTTPメソッドはCRUDメソッドに非常によくマッピングされます。

True RESTサービスは、ハイパーメディア駆動型のデータ形式(HAL、JSONコレクション、またはベンダーカスタム)を使用する必要があります。単一の固定URLから関連リソースへのリンクを検出する機能を提供します。

http://en.wikipedia.org/wiki/HATEOAS

同じサービス(単一の契約)がそのすべての基準を満たす方法がわかりません。

2
Dmitry S.