使用WebClient Sprint 5 reactor web调用微服务

时间:2017-02-04 20:29:58

标签: spring-boot spring-rest spring-webflux

我在我的休息控制器中调用微服务。当微服务成功响应时它工作正常但如果有一些错误响应我无法将错误响应传递给用户。以下是示例代码。

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

现在,如果有任何带有错误代码的JSON响应,那么Web客户端不会将错误响应传递给控制器​​,因为没有信息传播给api最终用户。

1 个答案:

答案 0 :(得分:0)

您应该能够从Mono API链接方法。寻找&#34; onError&#34;查看许多选项,允许您在出现错误时定义行为。

例如,如果您想要返回&#34;空&#34;员工,您可以执行以下操作:

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