
📌 공식문서에는 비동기 및 스트리밍 시나리오를 가진 서비스일 경우 현대적인 API를 제공하는 RestClient를 고려하라는 안내가 있습니다.
또한 과거에 Rest Template이 Depreacted가 되고 Spring Framework 5.x부터 WebClient로 마이그레이션 하라는 글도 찾아볼 수 있습니다.
확인 결과 현재 사용중인 6.0.x 버전에서도 릴리즈가 되고 있기에 사용하는데 문제는 없을 것 같습니다.
더 자세한 내용은 [Java] Spring Boot Web 활용 : RestTemplate 이해하기 이곳에서 확인이 가능합니다.
최신의 유연한 API를 제공하는 동기식 HTTP클라이언트 입니다.
HTTP라이브러리에 대한 추상화를 제공하여 Java 객체를 HTTP 요청으로 편리하게 변환 및 응당 객체를 생성할 수 있습니다.
2009년 Spring 3.x에 추가되었습니다.
Spring 5.x에서 소개된 Spring WebFlux에서 WebClient가 제시되었습니다.
코드의 유연성과 사용성을 향상시키고 가독성을 좋게 만들었습니다.
WebClient는 WebFlux에 기반한 비동기 HTTP 클라이언트 입니다.
WebMVC에서 사용하려면 block()으로 동기화를 해줘야 했고, WebClient 하나만을 위해 spring-webflux를 설치 해야 합니다.
HTTP 요청을 위한 서비스를 자바 인터페이스와 어노테이션으로 정의할 수 있도록 도와줍니다. 해당 서비스를 구현하는 프록시 객체를 생성하면 이를 통해 손쉽게 HTTP 요청을 보낼 수 있습니다.
[ HttpInterface 요청 및 반환 ]
HttpExchange 메소드에는 다음과 같은 동적인 설정들을 사용할 수 있습니다.
@RequestHeader
@PathVariable
@RequestBody
@RequestParam
@RequestPart
@CookieValue
반환 값으로는 다음과 같은 타입들을 사용할 수 있습니다. 그 외에도 ReactiveAdapterRegistry에 등록된 다른 비동기 또는 리액티브 반환 타입을 사용할 수 있습니다.
void, Mono
HttpHeaders, Mono
, Mono
, Flux
ResponseEntity, Mono<ResponseEntity>
ResponseEntity, Mono<ResponseEntity>
Mono<ResponseEntity<Flux>
개인적으로 진행하는 프로젝트에서는 실시간으로 코인 가격을 가져와서 수익성 계산 및 순위를 보여줘야 하는 api가 필요합니다. 아마 web-fulx가 필요한 WebClient 대신 RestClient를 사용하지 않을까 생각하고 있습니다.
Spring에서 외부 API를 호출하는 방법들
Spring Boot - REST 템플릿
REST 클라이언트
Spring의 HTTP 인터페이스
Api 보낼 때 RestTemplate, WebClient.. 그리고 RestClient?
[Java] Spring Boot Web 활용 : RestTemplate 이해하기
[Spring] 스프링 부트 3.2 RestClient 살펴보기
[Spring] Spring6에 등장한 HttpInterface에 대한 소개와 다양한 HTTP 도구들
[Spring] Spring Boot3.2에 새롭게 추가될 RestClient