HttpClient란?
HttpClient는 자바 애플리케이션이 다른 서버나 API에 HTTP 요청(GET, POST 등)을 보내고 응답을 받기 위한 라이브러리 또는 인터페이스임.
자바에서는 기본적으로 HttpURLConnection 이 존재하지만, 더 나은 사용성을 위해 다양한 HttpClient 구현체들이 존재함.
1. HttpClient의 역할
- 다른 서버(API 등)에 HTTP 요청 전송
- 응답(Response)을 받아서 파싱
- REST API 호출, 외부 서비스 통신, 인증 서버 연결 등 다양한 곳에 사용됨
2. 대표적인 HttpClient 라이브러리
라이브러리 | 설명 |
Java 11+ HttpClient (java.net.http) | 자바 표준 HttpClient, Java 11부터 기본 제공 |
Apache HttpClient | 널리 사용되는 오픈소스 HTTP 통신 라이브러리 |
OkHttp | Android 및 경량 애플리케이션에서 많이 사용됨 |
RestTemplate (Spring) | Spring에서 제공하는 간단한 HTTP 클라이언트 |
WebClient (Spring WebFlux) | 비동기/리액티브 기반의 최신 HTTP 클라이언트 |
3. Java 11+ 기본 HttpClient 사용 예시
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class HttpClientExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/data"))
.GET()
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
4. Spring의 RestTemplate 예시
@RestController
public class ApiController {
private final RestTemplate restTemplate = new RestTemplate();
@GetMapping("/call-api")
public String callApi() {
String url = "https://api.example.com/data";
ResponseEntity response = restTemplate.getForEntity(url, String.class);
return response.getBody();
}
}
Spring Boot 2.4 이후에는 RestTemplate는 유지보수 모드이며, WebClient 사용을 권장함
5. 비동기 HTTP 요청 – WebClient 예시 (Spring WebFlux)
@Autowired
private WebClient.Builder webClientBuilder;
public Mono getData() {
return webClientBuilder.build()
.get()
.uri("https://api.example.com/data")
.retrieve()
.bodyToMono(String.class);
}
WebClient는 비동기 논블로킹 방식으로, 대규모 트래픽 처리에 적합함
6. 주요 기능 요약
기능 | 설명 |
GET, POST, PUT, DELETE 요청 전송 | RESTful API 호출에 필수 |
헤더, 파라미터, 바디 설정 가능 | 인증, JSON 전송 등 |
응답 파싱 및 상태 코드 확인 | response.getStatusCode(), response.getBody() 등 |
타임아웃, 리트라이, 커넥션 풀 설정 | 네트워크 안정성 향상 |
동기 / 비동기 방식 지원 | 용도에 따라 선택 가능 |
7. 실무 사용 팁
- 외부 API 호출 시에는 타임아웃 설정 필수
- 응답 상태 코드에 따라 예외 처리 로직 분기 구성
- 대량 호출 시 커넥션 풀, 재시도, 서킷 브레이커 연계 필요 (예: Resilience4j)
- 보안이 필요한 경우 Bearer 토큰, Basic 인증 헤더 구성 가능
정리
HttpClient는 자바 애플리케이션에서 외부 HTTP 서버에 요청을 보내기 위한 도구임.
Java 11 이후 기본 제공되는 HttpClient, Spring에서 사용하는 RestTemplate, WebClient, 그리고 Apache/OkHttp 등 다양한 구현체가 존재함.
사용 목적에 따라 동기/비동기, 단순/고급, 블로킹/논블로킹 구조 중 적절한 도구를 선택하는 것이 중요함.
출처 : ChatGPT
'BE > Spring & Spring Boot' 카테고리의 다른 글
@Value (0) | 2025.05.21 |
---|---|
@ElementCollection (0) | 2025.05.20 |
[Spring Boot] 웹소켓 하트비트 (0) | 2025.05.07 |
[Spring Boot] PRG 패턴 (1) | 2025.05.06 |
[Spring Boot] CommandLineRunner (0) | 2025.05.05 |