2016-09-30 5 views
1

私はJhipsterを初めて使い、RestTemplateなどを使用してゲートウェイコードからマイクロサービスを手動で呼び出すことができるかどうか疑問に思っています。JHIPSTERゲートウェイリポジトリまたはサービスから手動でマイクロサービスを呼び出す方法

私の最初のアイデアは、ゲートウェイ自体を呼び出すことでした...しかし、私はそれが良い考えであるかどうかは分かりません。 私の2番目のアイデアはURLでサービスを呼び出すことでした。私の懸念は、私は与えられたノードのポートをハードコードしたくないということです。代わりに、私は適切な負荷分散を使用したい。

この記事を読んだのですが、https://dzone.com/articles/spring-cloud-rest-client-with-netflix-ribbon-basicですが、注入に失敗しました。

私はあなたが今手動豆宣言

@LoadBalanced 
@Bean 
RestTemplate restTemplate(){ 
    return new RestTemplate(); 
} 

を追加する必要があることをどこかに読んだ。しかし、今、私は実際のURIに苦しんでいる:私は、rootとして置くことになっていますでしょうか? (xxxxxは)

final HcpVersionedhcp hcpVersionedhcp = 
      restTemplate.exchange("http://xxxxx/api/user-data/byLogin/", UserData.class); 

私のゲートウェイapplication.ymlで私が持っている唯一の構成は

ribbon: 
eureka: 
    enabled: true 

答えて

3

ある "xxxxx" は、あなたのサービス名で交換する必要があります。あなたのサービスが "foo"の場合、 "http://foo/api/user ..."と書いてください。

JWTを認証に使用している場合は、JHIPsterのユーザーaを使用して認証するか、JWTトークンを要求から渡す必要があります可能。しかし、JWT認証のベストプラクティスではないので、JHipster UAAの方法をお勧めします。 つまり、認証と承認を担当するサービスがもう1つあります。別のサービスからサービスにアクセスするには、JPAと同様に、インタフェースで@AuthorizedFeignClientを使用できます。

ので、[OK]を、それはそう

+1

...

@AuthorizedFeignClient(name = "xxxx") interface XxxClient { @RequestMapping(value = "/api/some-entities/{id}") SomeEntity getSomeEntityById(Long @Path("id") id); } 

を定義し、内部クライアントの認証フローを実装し、この

@Inject private XxxClient xxxClient; //... pubic void someAction() { //... xxxClient.getEntityById(id); //.. } 

のような任意の春サービス/残りコントローラでそれを注入働く@EnableFeignClientsを追加する必要がありましたが、それ以外はすべて動作します。 – ALansmanne

関連する問題