2017-02-04 12 views
0

私は、残りのコントローラでマイクロサービスを呼び出しています。マイクロサービスからの応答が成功すると正常に動作しますが、何らかのエラー応答がある場合は、エラー応答をユーザーに返すことができません。以下はサンプルコードです。エラー・コードの任意のJSONレスポンスがある場合WebClient Sprint 5 reactorウェブを使用したマイクロサービスの呼び出し

@GetMapping("/{id}/users/all") 
public Mono<Employee> findAllProfiles(@PathVariable("id") UUID organisationId, 
              @RequestHeader(name = "Authorization", required = false) String oauthJwt) { 
    return webClient.get().uri(prepareUrl("{id}/users/all"), organisationId) 
      .header("Authorization", oauthJwt).accept(MediaType.APPLICATION_JSON) 
      .exchange().then(response -> response.bodyToMono(Employee.class)); 
} 

さて、Webクライアントは、何も情報が、APIのエンドユーザーに伝播されていないため、先のコントローラにエラー応答に渡しません。

+0

あなたはもう少し手の込んだてもらえますか?リモートサービスから送信されるHTTP応答は何ですか?あなたのアプリケーションはどのように動作していますか、 'findAllProfiles'は適切な 'Employee'で応答していないと思いますか? '(then)(?)'の後に 'log(" org.yourpackage.something ")'演算子を追加すると、どのようなログが表示されますか? –

答えて

0

Mono APIからメソッドをチェーンできる必要があります。 「onError」を探して、エラーが発生したときの動作を定義するためのオプションを表示します。例えば

、あなたが「空」の従業員を返すしたい場合、あなたは次の手順を実行できます。

.exchange() 
.then(response -> response.bodyToMono(Employee.class)) 
.onErrorReturn(new Employee()); 
関連する問題