【问题标题】:Calling Micro-service using WebClient Sprint 5 reactor web使用 WebClient Spring 5 reactor web 调用微服务
【发布时间】:2017-02-04 20:29:58
【问题描述】:

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

 @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 最终用户。

【问题讨论】:

  • 您能详细说明一下吗?远程服务发送的 HTTP 响应是什么?您的应用程序表现如何,我假设 findAllProfiles 没有以正确的 Employee 响应?如果您在 then(...) 之后添加 log("org.yourpackage.something") 运算符,您会看到什么日志?

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


【解决方案1】:

您应该能够从Mono API 链接方法。查找“onError”以查看许多选项,这些选项允许您定义出现错误时的行为。

例如,如果您想返回一个“空”员工,您可以执行以下操作:

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

【讨论】:

    猜你喜欢
    • 2019-02-14
    • 2019-05-17
    • 1970-01-01
    • 2021-05-24
    • 2018-07-24
    • 2021-01-01
    • 1970-01-01
    • 2019-01-03
    • 2018-02-19
    相关资源
    最近更新 更多