Edited at

今さら聞けないWebAPIの実装方式RESTとSOAPの違い

More than 5 years have passed since last update.

5/27 コメントでご指摘頂いた点を修正しました。


RESTとSOAPの違い


REST API


  • RESTはREpresentational State Transferの略。

  • RESTの世界では、ネットワーク上のコンテンツ(リソース)を一意なURLで表すのが基本。

  • 各リソース(URL)に対してGET,POST,PUT,DELETEでリクエストを送信しレスポンスをXMLやjsonなどで受け取る形式(レスポンスのフォーマット形式は指定されていない)。

  • RESTはURLがリソースに対応づけられるためURLは名詞的になることが多い。


SOAP API


  • SOAPはSimpleObject Access Protocolの略。

  • リクエストおよびレスポンスともにXMLフォーマットのデータで行う形式。

  • SOAPのURLは操作と対応づけられるため、URLの命名が動詞的になることが多い。

参考: http://programming-10000.hatenadiary.jp/entry/20130331/1364714875


RESTとSOAPの使い分け



  • RESTでは不特定多数を対象にした、入力パラメータが少ない情報配信や検索サービス等での利用に向いている。

  • SOAPでは複雑な入力を必要としたり、入出力に対してチェックを必要とするようなサービス等での利用に向いている。


引用元: http://xmlconsortium.org/wg/web2.0/teigensho/4--REST-SOAP.html


RESTとRESTfulの違い

ところで、RESTfulという言葉も聞くがこれは何を指すのか…



  • RESTの原則に従って実装されているシステムのことを、RESTfulと呼ぶようです。

  • 今現在、多数のWebAPIが国内で公開されていますが、そのほとんどがREST形式であると自称している(もしくはREST形式と一般に認知されています)。ですがそのほとんどは、HTTPプロトコルに対してXML形式の結果を返しているだけで、完全なRESTとはいえない「なんちゃってREST」であるような気がします。

  • 当時からこういった説明をするサービスが多かったこともあり、RESTといえば「HTTPリクエストに対してXMLレスポンスを返すもの」という認識が一般に広まり、普通に使用されるようになってしまった感があります。
    そういった経緯のせいかどうかはわかりませんが、RESTに忠実な実装を行ったシステムのことをRESTfulと呼ぶようになり、なんとなく棲み分けができて、めでたしめだたし?となっているようです。


引用元: http://convivial-web.com/blog/2009/03/restrestful.html