RESTful Web サービス (JAX-RS 実装など) は、コントラクトファースト (トップダウン) アプローチとコントラクトラスト (ボトムアップ) アプローチの両方をサポートしていますか?
1 に答える
RESTful Web サービスはコントラクトファーストとコントラクトラストの両方のアプローチをサポートしていますか?
使用するツール/フレームワークによって異なります。
あなたが話していることは、SOAP Web サービスとそれに付随する WSDL に適用されます。
WSDL は、Web サービスが入力として期待するものと、クライアントが出力として期待するものを記述します。両当事者が相互に通信するために従うべき契約を定義します。contract-first または contract-lastを実行して WSDL を取得し、後でこの WSDL を使用して、クライアント スタブまたはサービス スケルトンのコードを生成できます。
しかし、REST を行うことは SOAP を行うことと同じではありません。SOAP (プロトコル) で機能したプロセスは、REST (アーキテクチャ スタイル) に慣れているからといって、必ずしも REST (アーキテクチャ スタイル) に適用できるとは限りません。
メソッドとメソッド シグネチャを公開する SOAP とは異なり、REST はリソースを公開します。これらのリソースの交換で使用されるメディア タイプを理解することは、REST クライアントが REST Web サービスと通信するために必要なすべてです。リソースを説明するための別のドキュメントは必要ありません。
HATEOASの原則により、REST クライアントはより動的になり、同じメディア タイプを使用して通信する他のサービスに適応できます。静的なサービス記述ドキュメントを公開することは、REST サービスにとって制限となります。
そうは言っても、記述ドキュメントを公開する REST ツールがあります。たとえば、WADL (contract-last) を公開する Jersey です。公開された WADL を使用してクライアント スタブを構築できると確信しています。また、WADL を手動で記述し (コントラクト ファースト)、それを使用してスタブとスケルトンを生成できない理由がわかりません。しかし、私が言ったように、それは REST にとって最善の解決策ではないかもしれません。
以下は、REST でコントラクト ラストまたはコントラクト ファーストのアプローチが理にかなっている場合に意見を形成するために読むことができるいくつかの投稿です。