Loading...
Spring Framework Reference Documentation 7.0.2의 Exchange의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
exchangeToMono()와 exchangeToFlux() 메서드들 (또는 Kotlin의 awaitExchange { }와 exchangeToFlow { })
은 response status에 따라 response를 다르게 디코딩해야 하는 것과 같이 더 많은 제어가 필요한
고급 케이스들에 유용합니다:
1Mono<Person> entityMono = client.get() 2 .uri("/persons/1") 3 .accept(MediaType.APPLICATION_JSON) 4 .exchangeToMono(response -> { 5 if (response.statusCode().equals(HttpStatus.OK)) { 6 return response.bodyToMono(Person.class); 7 } 8 else { 9 // Turn to error 10 return response.createError(); 11 } 12 });
1val entity = client.get() 2 .uri("/persons/1") 3 .accept(MediaType.APPLICATION_JSON) 4 .awaitExchange { 5 if (response.statusCode() == HttpStatus.OK) { 6 return response.awaitBody<Person>() 7 } 8 else { 9 throw response.createExceptionAndAwait() 10 } 11 }
위의 내용을 사용할 때, 반환된 Mono 또는 Flux가 완료된 후에는 response body가
확인되고, 소비되지 않은 경우 메모리와 커넥션 leak을 방지하기 위해 release됩니다.
따라서 response는 downstream에서 더 이상 디코딩될 수 없습니다. 필요한 경우 response를
어떻게 디코딩할지는 제공된 함수에 달려 있습니다.
retrieve()
Request Body