我想知道是否有更好的方法在WebClient中获得错误响应,这样在调用onErrorResume
时不需要使用额外的ObjectMapper
。
在我的WebClient:
import org.springframework.web.reactive.function.client.WebClientResponseException.BadRequest
// ...
.onErrorResume(BadRequest::class.java, badRequestToMyDto())
private fun badRequestToMyDto(): (BadRequest) -> Mono<out MyDto> =
{ it: BadRequest ->
val error = objectMapper.readValue<ErrorResponseDto>(it.responseBodyAsByteArray)
// ...
}
有一个方法.bodyToMono
,所以我想知道是否有类似的东西可以在onErrorResume
中使用。
发布于 2021-12-15 17:20:54
当客户端响应是“错误”时,您可以结合使用retrieve()
和onStatus
来访问它。然后,您可以在它上调用bodyToMono
来取消对java对象的响应。根据响应体的内容类型,spring将使用正确的解码器。例如,如果主体是json,它将使用ObjectMapper
来解组。
WebClient.builder().build()
.get()
.uri("localhost:8080")
.retrieve()
.onStatus(HttpStatus::isError, clientResponse ->
clientResponse.bodyToMono(MyErrorResponse.class)
.flatMap(body -> {
// logic
})
)
https://stackoverflow.com/questions/70288529
复制相似问题