一部のクライアントに XML データを返す Web サービスを作成する必要があります。私が Webサービスのチュートリアルをグーグル
で検索した
ところ、80% がSOAPの使用について語っています。
私の質問はまさにこれです: クライアントはフェッチされたデータを通常の XML として読み取ることができますか?
SOAP に代わるものはありますか?
一部のクライアントに XML データを返す Web サービスを作成する必要があります。私が Webサービスのチュートリアルをグーグル
で検索した
ところ、80% がSOAPの使用について語っています。
私の質問はまさにこれです: クライアントはフェッチされたデータを通常の XML として読み取ることができますか?
SOAP に代わるものはありますか?
REST は、SOAP の軽量な代替手段です。GET、POST、PUT、DELETE などの既存の HTTP メソッドを使用します。概念的には、URL はサーバー上のリソースを識別し、HTTP メソッドは実行するアクションを定義します。
REST はアーキテクチャ スタイルであるため、実装方法は柔軟です。アーキテクチャは、アプリケーションが REST Web サービスの定義された特性を満たしている場合に RESTful と見なされるガイドラインにすぎません。
XML の代わりに JSON がトランスポートとして一般的に使用されます。利点は、JavaScript が JSON を即座に解析できることです。多くのサーバー側テクノロジには、JSON をオブジェクトに逆シリアル化するためのライブラリがあります。JSON が推奨されますが、REST では XML を含む任意のコンテンツ タイプを使用できます。
詳細については、REST に関するウィキペディアの記事を参照してください。
例:
Ford Thunderbird の Car クラスを取得する
HTTP GET http://example.com/cars/ford/thunderbird/8NUY1234
$.ajax({
url: '/cars/ford/thunderbird/8NUY1234',
type: "GET", /* implicit default, listed for clarity only */
success: function(data) {
alert(JSON.stringify(data) ); /* output json
alert("engine = " + data.engine);
}
});
コレクションに車両を挿入する
HTTP POST http://example.com/cars/ford/f150/?vin=F14564564564&color=blue&engine=I6&...
// insert record on server.
var dataString = "vin=F143567547&color=blue&engine=I6"
$.ajax({
url: '/cars/ford/f150',
data: dataString,
type: "POST",
success: function(data) {
}
});
それはあなたの要件に大きく依存すると思います。
JSON は、XML ほどオーバーヘッドがないため、軽量です。短いキーと値の部分が多数ある場合、XML で転送されるほとんどのバイトは、情報データ自体ではなく、タグと属性の定義です。
JSON は、JavaScript アプリケーションでの使用に適しています。ただし、ほとんどのプログラミング言語はネイティブで JSON をサポートしています。その中には、PHP や Flash 10.2 以降の Actionscript 3 などの一般的な言語があります。
XML は、明確に定義された (そして広く普及している) 他の標準の豊かな生態圏に存在します。その中で:
XSD は、情報がどのように構造化され、クライアントがどのように期待できるかを定義できるスキーマ定義です。これらには名前空間が付随する場合があります。多くのプログラミング言語 (Java など) またはフレームワーク (.NET など) は、このスキーマに基づいてクラスとオブジェクトを自動生成できます。
XSL(T) は変換言語であり、与えられた XML を自動的にクライアントに適したドキュメント形式に変換できます (たとえば、Web サイトのさまざまな部分のさまざまな HTML スニペット)。
SOAP は、クライアントがサービスを利用する方法に関するスキーマと明確に定義されたコントラクトを提供するため、これらの標準を大いに活用します。多くの言語 (PHP、Java など) と多くのフレームワーク (.NET や Zend Framework など) は、クライアントが SOAP プロトコルを解釈する必要なく、サービスが提供するインターフェイスを自動検出し、オブジェクト指向インターフェイスを自動生成できます。自動的に実行できることが明確に定義されています。一部のフレームワーク (Zend、.NET など) では、非常に明確に定義された標準のおかげで、クラスを定義すると、SOAP サービスを自動的に生成することさえできます。
jmort253 がすでに述べたように、REST はもう 1 つのアプローチです。標準や制限があまりないため、実装は非常に自由です。
簡単に言うと、データとして転送する必要がある複雑な情報には SOAP を使用し、多くのディメンションを持たないキー => 値のペアとして主に見ることができる非複雑なデータには REST を使用することをお勧めします。
SOAP の良い例は、大量のワークアウト データを処理し、大量のワークアウト結果を処理する必要がある adidas miCoach API です。
一方、Twitter は主にキー => 値の情報 (タグ => メッセージなど) を処理し、REST API に完全に適合します。