2017-06-21 19 views
1

JSONオブジェクトを返し、基本認証を使用するマイクロサービスがあります。REST呼び出しの効率化

次に、サービスにGETまたはPOST呼び出しを行うSpringbootクライアントアプリケーションがあります。

1)クライアントは/ログインを投稿し、その後、RestTemplateを使用してサービスを、基本ヘッダをプログラムで追加されますそして、すべてのGETまたはPOST呼び出し上のクライアントアプリ

2)に資格情報を格納して呼び出します。 AJAX呼び出し

2)サービスhttp://service/item/にRestTemplate呼び出しを行いますクライアントアプリ{IDを通じて

1)http://client/item/ {ID} GET:例えば

は、ユーザが項目を取得しようとし}

だから私はすべてのマッピングを2回書いています...私はJSで認証の詳細を公開したくない、とサービスは、私がクライアントアプリケーションに格納しますトークンまたは情報を返すことがあります。

何か間違っていますか? ThymeleafでHTMLを使用しています。

+0

資格情報(オリジナル)を保存するのではなく、/ loginサービスは(現在のhttpセッションと他のログイン値に基づいて)トークン化された値を返す可能性があります。このトークン化された一意の値を次のAPI呼び出しに使用できます。必要に応じて次のAPIが新しいトークンなどを返すことがあります。 – Pramod

答えて

1

グリーンフィールドプロジェクトの場合は、ティンレフを使用するのではなく、AngularまたはReactJs + Reduxまたは類似のソートに移行することをお勧めします。

しかし、これは別の議論です。あなたの質問に戻ると、2つの異なるアプリを持つ理由は何ですか?すべてのサービス(http://service/item)エンドポイントをクライアント(http://client)に移動できません。サービス(http://service/item)とクライアント(http://client)の両方があなたまたはあなたのチームの所有ですか?

サービス(http://service/item)とクライアント(http://client)の両方を別々にする必要がある場合は、これはコードの繰り返しです。its the curse of Microservicesを支払う必要があります。

その他の観点から見ると、サービス(http://service/item)がJavaであり、クライアント(http://client)がNodeJsにあると仮定すると、必ずしもコードの繰り返しとして扱う必要はありません。繰り返す

Javaモデルクラスをライブラリとして公開し、サービス(http://service/item)とクライアント(http://client)の両方で使用することで、コードの繰り返しを少しでも減らすことができます。私は同じプログラミング言語でプロデューサーと消費者を結びつけているので、このパターンを阻止します。

関連する問題