XML-RPC,SOAP,RESTに関する調査
以前ブログにも書きましたが、XML-RPC,SOAP,RESTの区別が全然出来ていないという困った状況だったので、ちょっと気合を入れて調べてみました。
以下、それぞれの特徴を簡単にまとめたメモ。
- SOAP(Simple Object Access Protocol)
- XML-RPCを拡張した仕様。
- SOAPはHTTPだけでなく、他のプロトコルも使うことが出来る。
- リクエストはXML-RPCと同様にHeaerと、Bodyで構成されるが、Headerは省略可能。
- 戻り値を複数の値にすることが可能。
- REST(Representational State Transfer)
- RESTは仕様ではなく、WebAPIの仕様を決める上での基本的な考え方(アーキテクチャスタイル)を表す。
- リソース(名詞)に対して、メソッド(動詞)を適用するという考え。
- Webにおいては、HTTPの4つのメソッドGET、POST、PUT、DELETEによりリソースに対して何を行うか伝える。
- Blogの場合で考えると、GETで記事表示、POSTで新規投稿、PUTで記事更新、DELETEで記事削除。
- AmazonECSのRESTに基づく通信では、パラメータをURLに含めてGETメソッドを用いることにより、サーバーからXMLデータを取得する。
こうしてそれぞれの特徴を比べてみると違いが分かる気がします。
XML-RPCとSOAPはリクエストにXMLを用いるという点で似たような仕様で、SOAPはXML-RPCの拡張版。RESTは仕様ではなく、HTTPの4つのメソッドを使ってやり取りを行うという考え。よってリクエストにXMLを使うのか、それともURLにパラメータを含めてデータの取得を行うのか、などが定められているわけではない。強引にまとめた感はありますが、こんな感じでしょうか。
・参考資料
- PerlでWeb APIを使いたおす
- 第1回〜第6回に渡って、XML-RPC、SOAP、RESTについて書かれている。順を追ってそれぞれについて説明されているので非常に分かりやすい。Perlのサンプルコードあり。
- XML-RPC 仕様書
- 以前の記事でも紹介した、XMP-RPCの仕様書。
- yohei-y:weblog: REST 入門
- RESTに関する詳しい説明、技術的な話だけでなく概念的な事も詳しく述べられている。
- SOAP Version 1.2 Part 0: Primer(英語)
- SOAPの仕様。SOAPのサンプルリクエストあり。