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と呼ぶようになり、なんとなく棲み分けができて、めでたしめだたし?となっているようです。