【发布时间】:2020-10-31 13:16:12
【问题描述】:
我有一个 Rest Web 客户端来执行 API 调用,并且我处理下面给出的异常。
我想以全局方式处理 404、401 和 400 错误,而不是在单个客户端级别处理。我们怎样才能做到这一点。
public Mono<ProductResponse> getProductInformation(String productId) {
return webClient.get()
.uri("/v1/products/"+productId)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.onStatus( httpStatus -> HttpStatus.NOT_FOUND.equals(httpStatus), clientResponse -> {
Mono<NotFound> notFound = clientResponse.bodyToMono(NotFound.class);
return notFound.flatMap( msg -> {
log.info(" Error Message {}" , msg.getErrorMsg());
return Mono.error(new NotFoundException(msg.getErrorMsg()));
});
}).onStatus( httpStatus -> HttpStatus.UNAUTHORIZED.equals(httpStatus), clientResponse -> {
Mono<NotFound> notFound = clientResponse.bodyToMono(NotFound.class);
return Mono.error(new NotAuthorisedException("Unauthorised"));
}).bodyToMono(ProductResponse.class);
}
【问题讨论】:
-
嘿@jagannathan 你问这个问题已经有一段时间了。你那边有什么更新吗?你试过我提供的答案了吗?
-
@AbhinabaChakraborty 忘记更新正确答案。现已接受。
标签: spring-webflux spring-webclient