web-dev-qa-db-ja.com

RESTfulサービス-同等のWSDL

私はRESTおよびSOAPについて読んでおり、RESTプロトコルを使用するよりもSOAPを実装することが有益である理由を理解しています。ただし、RESTの世界に「WSDL」に相当するものがない理由はまだわかりません。 WSDLが「必要ない」、またはRESTの世界では冗長になるという投稿を見てきましたが、その理由はわかりません。手動でコーディングする代わりに、プログラムで定義にバインドし、プロキシクラスを作成することは常に便利ではありませんか?私は哲学的な議論に入るつもりはありません。RESTにWSDLが存在しない理由、または必要ない理由を探しているだけです。ありがとう。

90
skaz

Webアプリケーション記述言語 (WADL)は、基本的にRESTfulサービスのWSDLと同等ですが、このような何かが必要かどうかについては継続的な議論があります。

Joe Gregorioは そのトピックに関する素晴らしい記事 を書いています。これは読む価値があります。

39
joschi

WSDLはサービスエンドポイントを記述します。 RESTクライアントはサーバーのエンドポイントに結合しないでください(つまり、URLを事前に認識しないでください)。RESTクライアントは、クライアントとサーバーの間で転送されます。

クライアントでクラスを自動生成して、返されたメディアタイプをラップすることは理にかなっている場合があります。ただし、サービスインタラクションを中心にプロキシクラスの作成を開始するとすぐに、HTTPインタラクションが不明瞭になり、RPCモデルへの逆戻りのリスクが生じます。

16
Darrel Miller

RSDLは、休憩をハイパーメディアのようにすることを目的としています。つまり、WSDLやWADLのようなサービス記述子よりも多くの情報を持っています。たとえば、ハイパーテキストやハイパーリンクなど、ナビゲーションに関する情報が含まれています。

たとえば、現在のリソースを指定すると、関連する別のリソースへのosリンクが設定されます。

ただし、この形式をサポートするRESTクライアントや、自動生成機能を備えたRESTサーバーソリューションは見つかりませんでした。

私はそれについて結論を出すには長い道のりがあると思います。 HTMLの長いストーリーとW3C対ブラウザをご覧くださいlol。

HypermediaのようなRestの詳細については、以下を参照してください。 http://en.wikipedia.org/wiki/HATEOAS

注:ロイフィールディングは、hypermidiaアプローチなしでRest Apisのこれらの傾向を批判しています: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

私の結論:今日、WADLはより一般的です。CamelCXFのようなRESTおよび統合フレームワークは既にWSDLをサポートしています(生成および消費)。これはWSDLに類似しているため、この移行プロセスで最もわかりやすい(SOAP to REST)。

次の章を見てみましょう;)

7

手動でコーディングする代わりに、プログラムで定義にバインドし、プロキシクラスを作成することは常に便利ではありませんか?

心から同意して、これが私が Swagger.io を使用する理由です

Swaggerは、RESTful APIの設計、構築、文書化、使用を支援するツールの大規模なエコシステムに支えられた強力なオープンソースフレームワークです。

したがって、基本的にSwaggerを使用してモデル、エンドポイントなどを記述し、次に swagger-codegen などの他のツールを使用して、手動でコーディングする代わりにプロキシクラスを生成します。

参照: [〜#〜] raml [〜#〜]

7
Alex Nolasco

WSDLと同等のRSDL(restful service description language)があります。以下のURLは、その実践を説明しています http://en.wikipedia.org/wiki/HATEOAS および http://en.wikipedia.org/wiki/RSDL 。問題は、wsdlからJava、またはその逆のコードを生成するツールがたくさんあることです。しかし、RSDLからコードを生成するツールは見つかりませんでした。

5
richard

WSDL 2.0仕様には、REST Webサービスもサポートされています。両方の世界のシナリオのベスト。 1はW3Cの推奨ではありませんが、ツールと開発者によって広くサポートされていますRef: http://www.ibm.com/developerworks/library/ws-restwsdl/

1
supernova

WSDLは、通信に使用されるメッセージ形式またはネットワークプロトコルに関係なく、エンドポイントとそのメッセージの説明を許可するために拡張可能です

ただし、RESTは、HTTP動詞とURIを使用してオブジェクトの状態を表すネットワークプロトコルを使用します。

WSDLはこの場所で通知します。このメッセージを送信すると、このアクションを実行し、結果としてこの形式を取得します。

RESTでは、新しいプロファイルを作成する場合、動詞POSTを使用し、JSONボディまたはhttpサーバー変数を使用してプロファイルをURL /profileに記述します

POSTは、ステータスコード201 CREATEDおよびヘッダーLocation: *new_profile_id*(たとえば12345)を使用して、サーバー側で生成されたIDを返す必要があります

その後、HTTP動詞POSTを使用して/profile/12345の状態を変更する更新を実行し、電子メールアドレスまたは電話番号を変更します。リモートオブジェクトの状態を明らかに変更します。

GETは、/profile/12345の現在のステータスを返します

PUTは通常、クライアント側で生成されたIDに使用されます

DELETE、明らか

HEADは、本文を返さずにステータスを取得します。

RESTを使用すると、適切に設計されたAPIを使用して自己文書化できるため、使いやすくなります。

これは素晴らしい記事です REST私もそれを理解するのに本当に役立ちます。

1
roder

Webアプリケーション記述言語(WADL)は、RESTful Webサービスを記述するために使用されるXMLボキャブラリーです。

WSDLと同様に、汎用クライアントはWADLファイルをロードし、対応するWebサービスのすべての機能にアクセスするためにすぐに装備できます。

RESTfulサービスのインターフェイスはシンプルなので、WSDLがRPCスタイルSOAP services。

0
JSS