【发布时间】:2021-01-08 12:57:08
【问题描述】:
我创建了一个 WebClient 来发出 get 请求,并专门处理 404 错误,我正在使用 onStatus 方法,如下面的 sn-p 所示。
client.get()
.uri(someUrl)
.headers(someHeaders)
.retrieve()
.onStatus(status -> status.equals(HttpStatus.NOT_FOUND), r -> Mono.empty())
.bodyToMono(MyJsonResponse.class)
当我在响应中得到 404 时,我的期望是它应该返回一个空单声道,但是,它也会将后续正文调用为单声道并尝试解析响应,理想情况下它不应该这样做。有什么建议吗?
【问题讨论】:
-
默认情况下 Mono#empty 将
Create a Mono that completes without emitting any item.表示它将完成然后继续执行。因此,在您的情况下,如果您只想忽略,请转到bodyToMono,您应该执行switchIfEmpty之类的操作,然后继续执行您想做的事情,或者返回错误并使用onErrorContinue -
感谢@Toerktumlare 的澄清。在新版本中似乎发生了一些变化,当代码在 Spring-webflux 5.0.x 上时,它曾经按预期工作
标签: java spring spring-webflux spring-webclient