我想处理 HEAD 端点,以便如果 HTTP 状态成功,我会返回
true
。如果是 404,我就返回 false
。否则,我想抛出不同的异常。
我目前有以下内容:
boolean head(String param) {
return webClient.head()
.uri(fromPath(PATH).pathSegment(param))
.exchangeToMono(response -> {
if(response.statusCode().is2xxSuccessful()){
return Mono.just(Boolean.TRUE);
} else if (response.statusCode().equals(NOT_FOUND)){
return Mono.just(Boolean.FALSE);
}
//what to do here?
})
.onErrorMap(this::mapErrorFunction)
.block();
}
我的
mapErrorFunction
已被其他方法使用,并且这是我想要使用的方法,因为根据引发的异常,将完成一件事或另一件事。但是,它需要一个 Throwable
类型的参数,当到达 exchangeToMono
块的末尾时我没有该参数,因此我无法在此时执行 this.mapErrorFunction
。
备案成功,404例均正常运行。
我该怎么做?也许
exchangeToMono
在这里不是正确的选择。
答案是在 if else 之后抛出异常并让
onErrorMap
方法处理它:
boolean head(String param) {
return Boolean.TRUE.equals(webClient.head()
.uri(uri.toUriString())
.exchangeToMono(response -> {
if (response.statusCode().is2xxSuccessful()) {
return Mono.just(Boolean.TRUE);
} else if (response.statusCode().equals(NOT_FOUND)) {
return Mono.just(Boolean.FALSE);
}
return response.createException().flatMap(Mono::error);
})
.onErrorMap(this::mapErrorFunction)
.block());