HttpUrlConnection
특징
- java에서 제공하는 기본적인 HTTP 클라이언트
- 저수준 API로 HTTP 요청 및 응답을 다루는데 사용됨
- HTTP 및 HTTPS를 지원하며, 각 요청마다 새로운 연결을 만들어 사용
- 직접적인 제어 가능
장점
- JDK의 일부로 제공되어 외부 라이브러리의 의존성이 없음
- 기본적인 HTTP 통신을 다루는데 유용
단점
- 낮은 수준의 API로 인해 응답 처리가 복잡
- 코드의 가독성이 낮음
RestTemplate
특징
- Spring이 제공하는 HTTP 클라이언트
- 간단한 API를 통해 HTTP 요청 처리
- 동기 방식 및 Blocking I/O 사용
장점
- Spring 기반 애플리케이션 사용에 유용
- 간단한 사용법
단점
- 동기 방식으로 동작하여 비효율적일 수 있음
- Non-Blocking, Reactive한 방식을 지원하지 않음
💡 공식문서에 추후 deprecated 될 것이라 명시되어 있음
WebClient
특징
- Spring 5에서 소개된 비동기 및 함수형 스타일의 HTTP 클라이언트
- Reactor 프로젝트의 Mono 및 Flux와 같은 타입을 사용하여 Reactive 프로그래밍 지원
- 비동기로 동작하며, Non-blocking I/O 지원
장점
- 비동기 및 리액티브 프로그래밍 모델을 지원하여 성능 및 확장성 향상 가능
- Non-blocking I/O를 통해 효율적인 리소스 활용 가능
단점
- 학습의 어려움
- 복잡한 코드 작성이 필요할 수 있음
- web-flux 의존성 필요
추가로 공부할 만한 내용
HttpInterface의 등장 (SpringBoot 3.0)
- Http 요청을 위한 서비스를 인터페이스와 애노테이션으로 정의
RestClient의 등장 (SpringBoot 3.2)
- 기존의 WebClient는 web-flux 의존성 필요.
- 반면에, RestClient는 web-flux의 의존성이 필요 없음
'삽질' 카테고리의 다른 글
UnsupportedProductError The client noticed that the server is not a supported distribution of Elasticsearch (2) | 2024.03.14 |
---|---|
Pillin 프로젝트 백엔드 개발 리뷰 (0) | 2024.02.28 |
오픈소소는 공짜가 아니다. (0) | 2023.11.29 |
헥사고날 아키텍처 (0) | 2023.11.28 |
클라우드 네이티브란? (0) | 2023.11.27 |