【发布时间】:2020-03-24 04:25:43
【问题描述】:
我有以下代码从另一个服务中获取用户详细信息。
ParameterizedTypeReference<SuccessResponse<<User>> userTypeReference = new ParameterizedTypeReference<>() {}
User user = webClient.get()
.uri("url")
.retrieve()
.onStatus(HttpStatus::is4xxClientError, response -> Mono.empty())
.bodyToMono(userTypeReference)
.onErrorResume(e -> Mono.empty())
.doOnError(e -> logger.error("Error on fetching user details {}", e))
.map(response -> response.getData())
.block();
来自服务的响应如下所示:
{
"status": "success",
"data": {
"name": "John",
...
}
}
如果 data 元素不可用,则映射返回 null 并在 block() 上抛出 java.lang.NullPointerException: The mapper returned a null value 错误。
我知道我们可以在映射期间处理nullPointerException,如果数据对象为空,则返回new User 对象。但我不想得到一个空对象。有什么方法可以使用block() 获取空值?
【问题讨论】:
标签: spring spring-boot spring-webflux