WADLを使用してRESTful APIを記述する必要がありますか?


27

適切にRESTfulなアプローチを広範に使用するプロジェクトに着手しようとしています。つまり、HATEOASを使用し、クライアントによる一般的な調査を可能にする方法でリソースを提供します。

クライアントアプリケーションをさまざまな言語で自動的に生成できるように、エンドポイントの説明を確実に提供したいと思います。SOAPベースのWebサービスにはWSDLを使用できること、およびRESTで使用されているHTTP動詞の定義を強化するWSDL2があるようです。しかし、その有用性をめぐって多くの記事が行き来しています。

したがって、外部コードジェネレーターがWebアプリケーション用のクライアントを迅速に構築できるようにWADLを使用する必要がありますか、それとも期待されるより良い標準がありますか?


1
うわー- 2日とtumbleweedsを通じて風の擦れる音だけで静かな...
ゲイリー・ロウ

絶対違う。WADLは、これまでに出会った最悪のAPIドキュメンタである可能性があります。
TheCodingArt

回答:


18

私のアドバイスは気にすることではありません。WADLはそれほど広く採用されていません。StackOverflowでこの質問を参照してください。別のStack Overflowの質問で示されているように、説明する種類の「適切な」RESTには適さないという強い見解があります。

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

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

この分野の優れた情報源は、ハイパーテキストアプリケーション言語です。です。私はそれのいくつかを少し重く感じますが、メーリングリストの議論は良くて、最新で関連性があります。

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


2
良い答えを得るために+1。これは、私がそれについて持っていた疑いを確認し、現在のアプローチを強化します(実際のゴミを確認するには独自のAPIを使用してください)。
ゲイリーロウ

5

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

WADL自体はそれほど優れていません。サービスのセマンティクスを十分にキャプチャしていないため、ツールを作成できません。もちろん、これは一般的に難しい問題です。WSDLが十分な情報を公開することはめったになく、それにより多くの労力が問題に費やされました(十分な情報を添付することは可能ですが、実際にはだれもほとんど行いません)。

それでも、私の同僚はサービスへのRESTインターフェースを使用するライブラリーで数ヶ月を費やしており、WSDLで記述された同じサービスへのインターフェース[*]は数秒でほぼ同じ品質に自動的にツール化されました。残りの部分は、ラッピングクラスを作成する1日についてでした。私の考えは(限られたサンプルサイズに基づいて)、サービスのセマンティクスは時間の経過とともに必然的に進化するため、複雑なサービスのすべての脆弱性を取り除くことはできません。インターフェイスライブラリ(注目すべきほぼすべての言語に適したWSDL / SOAPクライアントツールがあります)。両方を行う余裕がない限り、どちらに焦点を合わせるかは、最も気にするクライアントのセットに依存します。

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


[*]問題のサービスの作成者として、両方のインターフェイスが同じ操作をサポートしていること、つまり、共通の基礎となる抽象モデルがあり、両方のインターフェイスタイプが「自然な」スタイルであると言えます。サービス側では、RESTを使用した方が簡単なものもあれば、SOAPを使用した方が簡単な場合もありました。


+1。私の会社とその親sは「SOAPを必要としている人にはRESTがあります!」という時代にいます。SOAPサービスの周りに単純なREST ラッパーを作成します。すべてが単純または明白であるとは限りません。時にはそれは難しくて複雑です。そのため、サードパーティに、関心のあるいくつかのフィールドを定義するRESTインターフェイスを提供します。これにより、SOAPサービスが非常に複雑でありながら柔軟な入出力ドキュメントでラップされます。WCF「デュアルインターフェイス」サービスを使用します。このサービスでは、SOAPおよびRESTエンドポイントの両方がコード(XmlSpyで記述されたXsdスキーマから生成)から生成されます。
RoboJ1M 14年

2

W3Cはのための正式な勧告にしたRESTドキュメントの標準に基づいたWSDL 2.0をIBMの記事からの引用です:

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


この記事は2008年に作成されましたが、WADL自体は2009年にのみ提出されました。したがって、公正な推奨にはほど遠い状態です。今、私はW3C WSDL 2.0勧告の10年後の2017年の状態に興味があります。今日のWSDLの最新バージョンは、まだ同じ2007 WSDL 2.0です。単一の進捗ではありません(たとえば、HTMLやHTTPと比較して)。それは良いことだろうか?
ヘンディイラワン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.