Spring/WebClient
[WebClient] Exchange
blockbuddy93
2024. 3. 28. 14:06
exchangeToMono() 및 exchangeToFlux() 메서드(또는 Kotlin에서 awaitExchange { } 및 exchangeToFlow { })는 응답 상태에 따라 응답을 다르게 디코딩해야 하는 고급 케이스에 유용합니다.
Mono<Person> entityMono = client.get()
.uri("/persons/1")
.accept(MediaType.APPLICATION_JSON)
.exchangeToMono(response -> {
if (response.statusCode().equals(HttpStatus.OK)) {
return response.bodyToMono(Person.class);
} else {
// 에러로 전환
return response.createError();
}
});
위와 같이 사용할 때 반환된 Mono 또는 Flux가 완료된 후에는 응답 본문이 확인되고 소비되지 않으면 메모리 및 연결 누수를 방지하기 위해 해제됩니다. 따라서 응답은 하류로 더 이상 디코딩할 수 없습니다. 필요한 경우 제공된 함수가 응답을 어떻게 디코딩할지 선언해야 합니다.