企業や事業者は、ウェブアプリやその他のデジタル資産に対し、内部データの閲覧や操作を効率的に行うため、HTTPベースのリソースを利用しています。これらのHTTPリソースは、テキスト形式の文書を用いてデータを表現します。
WADLは、HTTPベースのアプリデータとエンドユーザーとの間の橋渡しとして機能し、その内容を分かりやすく説明します。本記事では、WADLとは何か、その意義について詳しく解説します。
WADLは、HTTPウェブアプリの機能や構成部分を説明するために用いられる言語です。この言語を使用して、アプリが提供するすべてのHTTPリソースとその関連性、依存関係を記述できます。
この言語は、エンドユーザーや他のマシンがHTTPウェブサービスの基本構造や処理を容易に理解できるようシンプルに設計されており、アプリの再利用も促進します。しかし、WADLはWorld Wide Web Consortiumによる標準化がまだなされていません。
以下に、WADLの特徴的な点を示します。
WADLを定義する主要な要素は以下の通りです:
この要素では、URIで識別されるリソースについて説明します。
この要素はxsd:anyURI型のbase属性を持ち、アプリが提供する全リソースのコンテナのように機能します。base属性は、含まれる各子リソース識別子の基本URIを示します。
この要素の主な属性は以下の通りです:
上記の属性に加え、resource要素にはdoc、param、template、matrix、header、queryなどの子要素が含まれます。
この要素は、特定のリソースに対してHTTP経由で提供される入力と出力を説明します。主な子要素は以下の通りです。
メソッド属性は、メソッド定義とメソッド参照の2種類があり、一度にどちらか一方のみが存在します。
メソッド参照
これは、xsd:anyURI型のhref属性を持つresource要素の派生で、hrefの値がメソッド定義要素への相互参照として機能します。
その他のWADL由来の属性や子要素は含めず、複数リソースに同一メソッドが適用される際の重複を防ぐために使用されます。
メソッド定義
アプリまたはresource要素の子として、このタイプには以下の属性が含まれます。
name は使用されるHTTPメソッドを示します。複数の子メソッド要素が同じnameを持つ場合、それらは兄弟要素となり、同一のHTTPメソッドの異なるバリエーションとして扱われ、各々異なる入力値を持ちます。
idは、広く用いられる既定のメソッドを定義するための識別子です。ローカルに組み込まれたメソッドにはidは付与されず、XMLの識別子としてURI参照に使用されます。
この要素により、HTTPメソッドで利用される入力内容が説明されます。属性はなく、doc、representation、paramなどの子要素を含むことがあります。
これらの子要素は、0個以上の値を持つ可能性があります。
レスポンス内のparamは、queryまたはheaderの値を示し、style属性に追加されます。
WADLの定義要素の一つとして、レスポンスは送信されたHTTPリクエストに対して受け取る出力を示します。レスポンスは1つの属性、Statusを持ちますが、これは任意で、特定のレスポンスに対応するHTTPステータスコードを示します。
その子要素は以下の通りです:
Parameterまたはparam要素は、パラメータの定義または参照として機能し、親要素のパラメータ化された値を示します。
パラメータ参照
この種類のparam要素は、xsd:anyURI型のhref属性を持ちます。
hrefはparam定義要素への相互参照となり、WADLで定義された他の属性や子要素は含めず、複数の親に同一パラメータを適用する際の重複を避けるために使用されます。
パラメータ定義
これは、親要素やリソースの子要素などのパラメータ化された値を説明します。また、representation、application、response、request要素にも利用されます。
この要素には、
これらの要素の主な属性は、id、name、style、type、default、path、required、repeating、fixedです。
id、name、styleを除き、その他の属性は任意です。
WADL例
WADLとWSDLは、どちらもウェブサービスの契約やインターフェースとして利用され、ほぼ同様の用途に使われます。効果的に利用するためには、これら2つの違いを把握することが重要です。
違いを詳しく理解する前に、サーバとクライアント間の橋渡しとなり、データ転送を担う共通点にも注目してください。
WADLとWSDLの比較
違いのポイント | WADL | WSDL |
---|---|---|
略称 | Web App Description Languageの略 | Web Service Description Languageの略 |
対応フォーマット | RESTfulアプリの記述に有用 | SOAPアプリの記述に有用 |
ファイルアップロードの仕組み | WADLファイルをアップロードすると、対象ウェブサービスの基本機能が理解できる | WSDLファイルをアップロードすると、メソッド呼び出し、引数、返却データの詳細が把握できる |
複雑さのレベル | 非常に軽量で、初心者にも扱いやすい | 複雑で、効果的な利用には高度な専門知識が必要 |
サーババインディング | ほとんど、または全くSMTPサーババインディングがない | 高いSMTPサーババインディングがある |
デザイン | シンプルなデザイン | 複雑なデザイン |
URIの仕組み | 簡単なURI機構を要求 | URI機構を正しく利用するため、XMLメッセージの詳細な記述が必要 |
認知度 | W3Cによる推奨はなし | W3Cから高く推奨される |
RESTとの関係 | RESTおよびHTTPでのみ動作 | 旧バージョン(WSDL 1.1、1.0)はGET・POSTのみ対応。最新バージョン(WSDL 2.0)はHTTPにも対応 |
定義される内容 | リソース、表現、リソース操作の手法などを説明 | 主要な要素全般(ただし |
説明可能なリソース | ||
認証 | 認証以外のすべてのキーがサポート | WSDLはWADLより柔軟で、すべての期待に応える |
入力 | POSTとGETの2機能を持つ | 「?」を用いて自動生成 |
目的 | アプリの再利用を支援 | 操作、メッセージ、呼び出しデータの支援 |
簡単に言えば、WADLはアプリの構造、メディア拡張、リソース、およびHTTPリクエストメソッドの詳細を記述するXMLです。RESTソリューションで試してみると理解しやすいでしょう。
この方法で、対象のRESTfulアプリの記述を確認し、参照することができます。
HTTPを利用するウェブサービスの機能や特徴を説明するために広く用いられているWADLは、Flickr、Google、Yahooなどのアプリで大きな役割を果たしています。WADLについて詳しく理解することで、これらのアプリやサービスの再利用がより容易になります。また、このファイルをWADL JSON形式に変換して、さらに便利に活用することも可能です。
最新情報を購読