web-dev-qa-db-ja.com

RESTful APIを記述するためにWADLを使用する必要がありますか?

適切にRESTfulなアプローチを広範囲に使用するプロジェクトに着手しようとしています。つまり、それは [〜#〜] hateoas [〜#〜] を使用し、クライアントによる一般的な探索を可能にする方法でリソースを提供します。

クライアントアプリケーションをさまざまな言語で自動的に生成できるように、エンドポイントの説明を提供したいと思います。 SOAP=ベースのWebサービスの場合、WSDLを使用でき、RESTで使用されるHTTP動詞のより詳細な定義を提供するWSDL2があることを理解しています。しかし、多くの記事が前後に揺れています。それはユーティリティです。

それで、外部コードジェネレーターがWebアプリケーション用のクライアントをすばやく構築できるように [〜#〜] wadl [〜#〜] を使用する必要がありますか、それとも期待されるより良い標準がありますか?

27
Gary Rowe

私のアドバイスは気にしないことです。 WADLはそれほど広く採用されていません Stack Overflowでこの質問を参照してください そして、「適切な」種類との適切な一致ではないという強い見方がありますRESTあなた ここでは別のスタックオーバーフローの質問に示されています と記述します。

WADL記述は構築に時間がかかり(ほとんどが手動)、HATEOASが回避するように設計された脆弱性を追加します。つまり、明確に定義されたエントリポイントがいくつかありますが、クライアントの処理方法は、事前定義されていない不透明なリンクによって決まります。 '契約する'。

ドキュメンテーション、スキーマ定義などから完全に逃げる必要があると言っているわけではありませんが、RESTifarianの範囲には、必要のない高レベルの自己記述にアプローチできることを示唆する終わりがあります。これが実際のケースであるとは思いませんでした。いくつかの確かに機能する例は、すべて馴染みのない開発者のニーズです。そして、いくつかのクライアントを自分のAPIで試してみてください(JQueryから十分簡単です)。これにより、消耗品を作成しているかどうかがわかります。

この領域の優れた情報源は ハイパーテキストアプリケーション言語 です。少し重いものもありますが、メーリングリストでの議論は最新かつ適切で適切です。

あなたが始めるのに役立つことを願っています。

18
Julian Browne

RESTインターフェースは、インタラクティブなブラウザ以外から駆動されるので、あまり良い状態ではありません。HATEOASは良い原則ですが、非常に人間指向のインターフェースになり、ユーザーインターフェースの負担がサービス開発者にかかることになります(サービス開発者は通常、サービス自体を機能させるためにかなり忙しいです)。

WADL自体はそれほどすばらしいものではありません。実際には、サービスのセマンティクスを十分に捉えていないため、物事を整理することができません。もちろん、これは一般的に難しい問題です。 WSDLが十分な情報を公開することはめったになく、問題に多くの労力が費やされました(十分な情報を添付することは可能ですが、実際にそうすることはほとんどありません)。

それでも、私の同僚は、RESTサービスへのインターフェース、および同じサービスへのWSDL記述のインターフェースを使用するライブラリの開発に数か月を費やしてきたと伝えています[*] 秒単位でほぼ同じ品質になるように自動的に調整されました。残りの作業は、ラッピングクラスを作成する1日程度でした。 (限られたサンプルサイズに基づく)私の直感は、サービスのセマンティクスが時間とともに必然的に進化するため、複雑なサービスのすべての脆弱性を取り除くことができないことであり、そのRESTはSOAP=はインターフェイスライブラリに適していますが、ほとんどすべての言語に対応する優れたWSDL/SOAPクライアントツールがあります。両方を実行する贅沢さがない限り、焦点を当てるのは、最も気にするクライアントのセットによって異なります。

私はWADLにあまり力を入れませんが、RESTフレームワークがそれを生成する場合(Apache CXFがこれを行います)、それを提供しない特別な理由はありません。ツールを使いたい人は誰でもコードがオフの場合、WSDL + SOAPが必要になります。


[*]問題のサービスの作成者として、私は両方のインターフェイスが同じ操作をサポートしていたことを確認できます-共通の基本的な抽象モデルがありました-両方のインターフェイスタイプに対して「自然な」スタイルで。サービス側では、RESTの方がSOAPの方が簡単なものもあります。

5
Donal Fellows

W3C は、 WSDL 2. に基づいて RESTドキュメント標準 を正式に推奨しています。 IBMの記事 からの引用は次のとおりです。

Webサービスという用語は通常、SOAPを使用した操作ベースまたはアクションベースのサービスと、WS-AddressingやWS-SecurityなどのWS *標準に関連付けられています。 REST Webサービスという用語は、通常、HTTPおよびXMLを使用するリソースベースのWebサービスアーキテクチャを指します。これらの建築用Webサービスのスタイルにはそれぞれ場所がありますが、最近まで、WSDL標準は両方のスタイルを同等にサポートしていませんでした。 WSDL 1.1 HTTPバインディングは、HTTPおよびXMLとの通信を記述するには不十分であったため、WSDLでREST Webサービスを正式に記述する方法はありませんでした。 REST Webサービスを念頭に置いて設計されたWSDL 2.0の公開は、World Wide Web Consortium(W3C)の推奨として、_を記述する言語があることを意味しますREST Webサービス。

2