web-dev-qa-db-ja.com

複数のWebサーバー間のRESTful API通信

RESTfulな通信を理解しようとしていますが、いくつかの疑問があります。

Architecture AngularJSで作成したメインのWebアプリケーション(アーキテクチャの右側)があります。これは、他のアプリケーションまたはデータベース(左側)を含む複数のWebサーバーからのデータを示しています。これらのアプリケーションの中にはREST apiを持たないものもあれば、そうでないものもあるので、これらのアプリケーションとAngularJS Webアプリの間にREST apiインターフェースを置くと、作業を容易にします。

私の問題は、左側のアプリケーションからこれらのREST apiを適切に知らないことです。

これに対する私の現在の「解決策」は、エンドポイント、リソースなどを含む各アプリケーションを登録することです。これらのエンドポイントの一部がSSE(Server Sent Events))を使用し、他の一部は特定のデータのみを表示するとします、私はこのようなものを考えました:

Resources

SSEを提供するエンドポイントからエンドポイントを分離し、GETに関連するエンドポイントのみを使用してデータを取得するために、メソッドごとだけでなく、angularjsでロングロッピングを適用できるようにするため、PUT更新するなど。

私の質問は、これはまったく意味がありますか?これは正しい方法ですか?

これらのアプリケーションの一部にすでにREST apiが設定されている場合、AngularJSの$ httpまたはngResourceを使用して直接アクセスできます。しかし、これを完全に知らない場合はどうでしょうか。 REST api、またはまだ実行されていない場合はどうなりますか?

ありがとうございました!

6
vak

対話しているダウンストリームサービスに関して多くの不明点があるため、AngularJSアプリケーションと共存する独自のREST=サービスを作成することは理にかなっています。各エンドポイントは委任できますこれにより、ダウンストリームサービスプロバイダーを追加/変更した場合に、UIレイヤーを変更する必要がなくなります。

Javaベースのバックエンドを作成した場合、Apache camelのようなものが有益かもしれません: http://camel.Apache.org/

2
Zach

ここには2つの異なる主題があるようですので、両方について説明します。

Webハンドラーのセットアップ

あなたの側では、はい、あなたは明確なデザインを念頭に置いているように見えます、そして私はあなたがそれをどのようにしたかについて何の問題も見ません。あなたが言ったように、それは単にウェブアプリケーションを理解することの問題です。

Webアプリが内部のREST呼び出しを非表示にしている場合、一般に公開されていない限り、おそらくPDF特定のアプリケーションのユーザーガイド。

それ以外の場合は、各ボタンまたはリンクがWebサービスを呼び出すように見えるかどうかを確認し、そのエンドポイントURLをコピーしてから、ブラウザーのアドレスバーに貼り付けて、そこに移動して生データを確認できます。これは、REST APIをそれに接続する方法についてのより良い考えを与えるかもしれません。

慣れていないことを学ぶREST API

ほとんどのRESTエンドポイントまたはAPIには、閲覧しやすいかなりの種類の組み込みのWebベースのドキュメントがあります。

たとえば、エンドポイントを使用したい場合

http://site.server.com/REST/fetchData?id=123

代わりに、より高いレベルのREST親URLにナビゲートしてみることができます。親URLには、通常、さまざまなエンドポイントを参照するための組み込みの方法があり、場合によってはそれらのエンドポイントのドキュメントも参照できます。ArcGISはこれを行いますサービスを公開するときに、特別な設定なしで、箱から出して自動的に。

http://site.server.com/REST

これはApache Tomcatの場合です。 Tomcat自体に関する一般的な情報を取得するためのデフォルトのGUIページを公開します。 Tomcatがsite.server.comという名前のサーバーで実行されていれば、次のURLでアクセスできます。

http://site.server.com:8080

Tomcatは常に、少なくとも暗号化されていないHTTP上で、ポート8080から実行されます。設定によっては、そのページに「OK、動作します」のようなメッセージが表示される場合もあります。これは、Tomcatが稼働中であることを確認する以外はそれほど役に立ちません。

0
Tim