ume

SoapとRestで クライアント/サーバーを比較してみた

前書き

なぜ昨今のwebアプリケーションではrestの設計手法で開発されるようになったのかがわからなかったので1990年代に主流だった設計手法(soap)と比べてrestは何が嬉しいかを学習したいと思います。

クライアントとサーバー

soapとrest両方の設計手法ではクライアントとサーバーの関係性は以下のようにすべき(両方とも同じ構造)

要はクライアント側(左)がリクエストを送りサーバー側(右)はリクエストが来るまで何もしないという関係性

こうするメリット.
マルチプラットフォーム(PCやスマホなど)に対応できる.

マルチプラットフォームとは?
⇨異なる機種やOSでも、同じアプリケーションの動作が可能。つまり以下のようにiphoneでもAndroidでもmacでもタブレットでも同じ動作になる。

クライアントからリクエストを送るときのrestとsoapの違い.
rest (HTTPプロトコルGET,POSTなどをベースにして作成)

GET /api/users/123 HTTP/1.1
Host: example.com
Accept: application/json

soap(XMLという複雑なものをベースにしている)

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://example.com/services">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:GetUserDetailsRequest>
         <ser:UserID>123</ser:UserID>
      </ser:GetUserDetailsRequest>
   </soapenv:Body>
</soapenv:Envelope>

同じページをリクエストしてるのにリクエストの容易さが全然違う.