トップ 一覧 置換 検索 ヘルプ RSS ログイン

SOAPとRESTの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!用語説明
http://www.atmarkit.co.jp/ait/articles/1002/26/news094.html

!!!比較
,                                  , SOAP , REST , JSON 
,学習容易性                        ,×    ,○    ,○    
,コーディング量(自動生成分は除く),○    ,×    ,○    
,テストのし易さ                    ,×    ,◎    ,×    
,開発ツール                        ,○    ,×    ,×    
,導入の容易性                      ,×    ,○    ,○    
,開発にかかるトータル時間          ,×    ,○    ,◎    
,複雑なデータの入力                ,○    ,×    ,×    
,複雑なデータの出力                ,○    ,○    ,△    
,厳密な型チェック                  ,○    ,×    ,×    
,汎用性(扱える開発言語の種類)    ,○    ,○    ,×    
,標準化団体                        ,W3C   ,-     ,ecma  
,拡張性(WS-*)                    ,◎    ,×    ,×    

!!!SOAP
!!Java
JAX-WSという、SOAPを扱うためのAPIがある。
[[JavaでSOAP]]

!!PHP
[[PHPでSOAP]]

!!JavaScript

!!!REST
!!Java
[[JavaでREST]]

!!PHP
[[PHPでREST]]

!!JavaScript


!!!REST
http://xmlconsortium.org/wg/web2.0/teigensho/4--REST-SOAP.html
明確な仕様はないが、
RSSのような「URLにアクセスするとXMLが返ってくるようなもの」

!!RESTアクセスのサンプル
{{code Java,
function requestRest(){

    var endpoint = "http://ホスト名/WebSite1/WebService.asmx";  // 送信先
    var param1 = "keywork";                                      // パラメータ

    // URLを生成
    var url = endpoint + "/getHello?str=" + encodeURI(param1) + "&dummy="+(new Date().getTime());

    // XMLHttpRequestを作成
    try {
        xmlhttp = new XMLHttpRequest();     // Netscape, Firefoxなど
    } catch (e){
        try {
            xmlhttp = new ActiveXObject ("Msxml2.XMLHTTP");     // IE
        } catch (e){
            try {
                xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");  // IE
            } catch (e){
                // XMLHttpRequestの作成に失敗
            }
        }
    }
    
    xmlhttp.onreadystatechange = method1;    // レスポンスを受け取った時に呼ばれるメソッドを指定
    xmlhttp.open('GET', url, true);
    xmlhttp.setRequestHeader ("Content-Type","text/xml; charset=utf-8");

    xmlhttp.send();  // RESTで送信

}

function method1() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        alert(xmlhttp.responseText);    // 結果をデバッグ表示
    }
}
}}

!!!SOAP
XMLでメッセージをやり取りする。
リクエストをXMLで送って、XMLを受け取る。

!!SOAPアクセスサンプル
{{code Java,
function requestSoap(){

    var endpoint = "http://ホスト名/WebSite1/WebService.asmx";  // 送信先
    var param1 = "keywork";                                      // パラメータ

    // SOAPメッセージを作成
    var msg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\
<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n\
               xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \n\
               xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n\
  <soap:Body>\n\
    <getHello xmlns=\"http://tempuri.org/\">\n\
      <str>" + param1 + "</str>\n\
    </getHello>\n\
  </soap:Body>\n\
</soap:Envelope>";

    // XMLHttpRequestを作成
    try {
        xmlhttp = new XMLHttpRequest();     // Netscape, Firefoxなど
    } catch (e){
        try {
            xmlhttp = new ActiveXObject ("Msxml2.XMLHTTP");     // IE
        } catch (e){
            try {
                xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");  // IE
            } catch (e){
                // XMLHttpRequestの作成に失敗
            }
        }
    }
    
    xmlhttp.onreadystatechange = method2;    // レスポンスを受け取った時に呼ばれるメソッドを指定
    xmlhttp.open('POST', endpoint, true);
    xmlhttp.setRequestHeader ("Content-Type","text/xml; charset=utf-8");
    xmlhttp.setRequestHeader ("SOAPAction","\"http://tempuri.org/getHello\"");

    xmlhttp.send(msg);  // SOAPメッセージを送信
}

function method2() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        xmlDoc = xmlhttp.responseXML;   // 結果をDOMオブジェクトとして取得
    }
}
}}

{{category2 プログラミング言語,Java}}