Spring/WebClient
[WebClient] Retrieve
blockbuddy93
2024. 3. 28. 13:45
retrieve() 메서드를 사용하여 응답을 추출하는 방법을 선언할 수 있습니다. 예를 들면
WebClient client = WebClient.create("https://example.org");
Mono<ResponseEntity<Person>> result = client.get()
.uri("/persons/{id}", id)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.toEntity(Person.class);
또는 바디(body)만 가져오려면
WebClient client = WebClient.create("https://example.org");
Mono<Person> result = client.get()
.uri("/persons/{id}", id)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Person.class);
디코딩된 객체들의 스트림을 얻으려면
WebClient client = WebClient.create("https://example.org");
Flux<Quote> result = client.get()
.uri("/quotes")
.accept(MediaType.TEXT_EVENT_STREAM)
.retrieve()
.bodyToFlux(Quote.class);
기본적으로, 4xx 또는 5xx 응답은 WebClientResponseException을 발생시키며, 특정 HTTP 상태 코드에 대한 서브클래스를 포함합니다. 오류 응답의 처리를 사용자 정의하려면 다음과 같이 onStatus 핸들러를 사용합니다.
Mono<Person> result = client.get()
.uri("/persons/{id}", id)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.onStatus(HttpStatus::is4xxClientError, response -> ...)
.onStatus(HttpStatus::is5xxServerError, response -> ...)
.bodyToMono(Person.class);