XML-RPC,SOAP,RESTに関する調査

以前ブログにも書きましたが、XML-RPC,SOAP,RESTの区別が全然出来ていないという困った状況だったので、ちょっと気合を入れて調べてみました。

以下、それぞれの特徴を簡単にまとめたメモ。

  • XML-RPC(XML Remote Procedure Call)
    • 1998年に策定された、比較的シンプルな仕様。
    • XMLを利用してネットワーク越しにサーバー側のなんらかの処理を呼び出し、結果をXMLで受け取る。
    • クライアントからサーバーへのアクセスには、HTTPのPOSTを用いる。
    • リクエストはHeaderと、Bodyで構成される。Body部分はXMLで表現する。
    • Header部分の、「User-Agent」、「Host」、「Content-Type」、「Content-Length」は必須。
    • 戻り値は複数の値をとれないが、戻り値を配列にすることで複数の値を返せる。
  • 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にパラメータを含めてデータの取得を行うのか、などが定められているわけではない。強引にまとめた感はありますが、こんな感じでしょうか。

・参考資料