2017-02-04 9 views
0

내 나머지 컨트롤러에서 마이크로 서비스를 호출합니다. 마이크로 서비스의 성공적인 응답이있을 때 제대로 작동하지만 오류 응답이 있으면 사용자에게 오류 응답을 전달하지 못합니다. 아래는 샘플 코드입니다.WebClient Sprint 5 원자로 웹을 사용하여 마이크로 서비스 호출

@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)); 
} 

지금 다음 웹 클라이언트가 아무런 정보가 API를 최종 사용자에게 전달되지 인한되는 컨트롤러에 오류 응답에 통과하지 못한 오류 코드와 어떤 JSON 응답이있는 경우.

+0

당신이 좀 더 정교한 수 : 당신이 "빈"직원을 반환하기를 원한다면

는 예를 들어,이 다음 할 수 있을까? 원격 서비스에서 보낸 HTTP 응답은 무엇입니까? 어떻게 응용 프로그램이 동작하는지,'findAllProfiles'가 적절한'Employee'로 응답하지 않는다고 가정합니까? 'then (...) '다음에'log ("org.yourpackage.something")'연산자를 추가하면 어떤 로그가 보입니까? –

답변

0

Mono API에서 메소드를 연결할 수 있어야합니다. 오류가있을 때 동작을 정의 할 수있는 여러 가지 옵션을 보려면 "onError"를 찾으십시오.

.exchange() 
.then(response -> response.bodyToMono(Employee.class)) 
.onErrorReturn(new Employee());