Develop
WebClient 에러 처리
작은이야기
2023. 1. 10. 15:28
request 개별 적용
webClient.get()
.uri { uriBuilder ->
uriBuilder.path("/v1/~~~~~")
.queryParam("aaa", 11)
.queryParam("bbb", 222)
.build()
}
.retrieve()
.onStatus(HttpStatus::is5xxServerError) {
val response = it.bodyToMono<Coupon.ErrorResponse>().block()
Mono.error(HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR, response.detailMessage ?: ""))
}
.awaitBody<List<ResponseItem>>()
webclient 적용
ExchangeFilterFunction.ofResponseProcessor { clientResponse: ClientResponse ->
if (clientResponse.statusCode().is5xxServerError) {
return@ofResponseProcessor clientResponse.bodyToMono(String::class.java)
.flatMap { errorBody: String? ->
val body = objectMapper.readValue(errorBody, ErrorResponse::class.java)
Mono.error(
HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR, body.detailMessage ?: "")
)
}
} else {
return@ofResponseProcessor Mono.just(clientResponse)
}
}