RestClient
REST API 서버에 HTTP 요청을 보낼 수 있는 클라이언트 툴 또는 라이브러리
client - Frontend, Frontend - Backend 뿐만이 아니라,
Backend A - Backend B 사이에도 Backend A가 Backend B의 리소스를 사용할 수 있다.
클라이언트와 서버의 관계는 상대적이기 때문에
Frontend - Backend의 관계에서는 Frontend가 클라이언트가 되고,
Backend - Backend 관계에서는 리소스를 요청하는 쪽이 클라이언트가 된다.
UI가 갖춰진 RestClinet로는
Postman, Thunder Client, Insomnia, Soap UI 등이 있다.
SpringFramework에서는 REST엔드포인트에 대한
호출을 수행하기 위해 제공되는 다양한 선택지가 있다.
- WebClient
✔ 비동기(non-blocking) I/O
➜ 비동기 방식으로 HTTP요청을 처리. 클라이언트가 서버로부터 응답을 기다리는 동안 다른 작업을 처리할 수 있다는 의미.
✔ Reactive Streams의 back pressure 메커니즘
➜ back pressure : 데이터 생산자가 생성하는 데이터의 양을 제어하여 데이터 소비자가 처리할 수 있는 속도에 맞추는 것
➜ Reactive Streams : Publisher와 Subscriber 사이에서 데이터의 흐름속도를 조절, 소비자가 처리할 수 있는 양만큼의 데이터만 생성하고 전달하므로 데이터의 누수나 과부하를 방지.
비동기 환경에서 대용량 데이터 처리나 실시간 데이터 스트리밍을 효과적으로 다루는 데 사용됨.
✔ 적은 하드웨어 리소스로 높은 동시성 처리
✔ 함수형 스타일, 간결한 API
➜ Java 8 람다와 메서드 체이닝을 활용하여 HTTP 요청을 빌드하고 구성하기가 쉬움
✔ 동기적 비동기적 상호작용
➜ WebClient는 동기적인 요청과 비동기적인 요청을 모두 지원
✔ 스트리밍
➜ WebClient는 서버로부터 스트리밍 데이터를 받거나 서버로 스트리밍 데이터를 전송할 수 있음.
대용량 데이터나 실시간으로 데이터를 처리해야 할 때 유용함 - RestTemplate
✔ SpringApplication에서 RESTfull API와 간편하고 쉽게 작업할 수 있도록 제공
➜ RestTemplate을 사용하여 GET, POST, PUT, DELETE 등 다양한 유형의 HTTP 요청을 수행하여 RESTful 서비스와 통신할 수 있음. JSON, XML 및 폼 데이터와 같은 다양한 데이터 형식을 지원하며, 요청 페이로드를 쉽게 보내고 응답받을 수 있음.
Spring Framework (6.0.11)의 공식문서에는 유지보수 모드에 있으며, Spring팀은 WebClient 사용을 권장하고 있다고 한다. - HTTP Interface
✔ HTTP 서비스를 Java 인터페이스로 정의하고, HTTP 교환을 위해 주석이 달린 메서드들을 사용하는 방법을 제공
참고 - hyoreal51 -
'자바 탐구' 카테고리의 다른 글
자바) 오버로딩과 오버라이딩 (0) | 2023.07.31 |
---|---|
스프링) @SpringBootTest와 @WebMvcTest의 차이 (0) | 2023.07.25 |
자바) List, Set, Map, HashMap의 특성 (0) | 2023.07.24 |
스프링) 스프링 컨테이너(Spring Container) (0) | 2023.07.24 |
스프링) 의존성 주입(Dependency Injection) 방식 (0) | 2023.07.22 |