Spring Boot RestClient

CHR·2024년 3월 8일
0

Spring Boot에서 외부 API를 호출할 수 있는 방법을 찾던 중, 기존에 많이 쓰이던 방법인 RestTemplate과 WebClient를 알게 되었다.

RestTemplate

RestTemplate은 스프링 프레임워크에서 제공하는 HTTP 클라이언트 라이브러리로, RESTful API를 호출할 수 있다.

  • RestTemplate은 기본적으로 동기적인 방식으로 동작하여 요청을 보내고 응답을 받을 때까지 대기한다. 또한 Blocking I/O를 사용하여 스레드를 차단하는 방식으로 동작한다.
  • RestTemplate은 요청당 하나의 스레드를 사용한다. 따라서 많은 요청이 동시에 발생할 경우 많은 수의 스레드가 필요하다.
  • 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원하며, 요청 및 응답을 쉽게 변환할 수 있는 메시지 컨버터를 제공한다.

WebClient

WebClient는 Spring 5부터 도입된 비동기적이고 리액티브한 HTTP 클라이언트 라이브러리이다.

  • WebClient는 비동기적인 방식으로 동작하여 요청을 보낸 후 응답을 기다리지 않고 다른 작업을 수행할 수 있다. 또한 Non-Blocking I/O를 사용하여 스레드를 차단하지 않고 요청을 처리하는 장점을 가지고 있다.
  • WebClient는 리액티브 프로그래밍 모델을 지원해, 요청과 응답을 스트림으로 처리하고 비동기적으로 데이터를 처리할 수 있는 장점을 제공한다. Spring WebFlux와 함께 사용하면 높은 성능과 확장성을 얻을 수 있다.
  • 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원하며, 요청 및 응답을 쉽게 변환할 수 있는 메시지 컨버터를 제공한다. 또한, 필터를 사용하여 요청과 응답을 수정하거나 로깅할 수도 있다.

위 두 가지를 공부하다가 Spring Boot 3.2.0 에서 추가된 RestClient에 대해 알게 되어 공부하였다.

RestClient

RestClient는 WebClient와 비슷한 방식으로 동작하는 HTTP 클라이언트 라이브러리이다. 다만, Spring MVC 환경에서도 사용 가능해 WebClient와 달리 WebFlux 의존성을 추가하지 않아도 되는 장점이 있으며, RestTemplate이 직관적이지 못했던 점을 개선하여 더 편리하게 사용할 수 있다.
또, 기존의 메시지 컨버터, 요청 팩토리, 인터셉터 및 RestTemplate의 다른 구성 요소를 그대로 사용할 수 있다.

이번에 RestClient를 사용하여 외부 서버에 API 요청을 보내는 작업을 해보고 있다.
최근에 나온 라이브러리라 레퍼런스는 별로 없지만 최신 라이브러리를 사용해 볼 수 있는 경험이라 좋을 것 같다!

profile
🍷

0개의 댓글

관련 채용 정보