[Java] Java로 다른 서버 API 호출하기
- 📕 Programing/Java
- 2025. 8. 28.
📌 Java로 다른 서버 API 호출하기 – 기본부터 실전까지
1. 왜 Java에서 API 호출을 할까?
요즘 서비스 개발에서는 외부 서비스나 마이크로서비스 간의 통신이 필수입니다.
예를 들어:
- 날씨 API 호출 → 앱에 날씨 정보 표시
- 사내 다른 팀의 REST API 호출 → 데이터 가져오기
- 결제/인증 API 연동 → 서비스 결제 기능 구현
Java는 서버 개발에서 널리 쓰이는 만큼, 전 세계 개발자들이 API 호출을 매우 자주 사용합니다.
2. Java에서 API 호출 방법
Java에는 HTTP 요청을 보낼 수 있는 여러 가지 방법이 있습니다.
방식 특징
| HttpURLConnection | JDK 기본 제공, 가벼움, 동기 방식 |
| Java 11+ HttpClient | JDK 11부터 제공, 비동기 가능, 편리한 API |
| Spring RestTemplate | Spring에서 많이 쓰던 방식(현재는 WebClient 권장) |
| Spring WebClient | 리액티브, 비동기 지원, 최신 표준 |
| OkHttp / Retrofit | 안드로이드·서버 양쪽에서 인기 있는 외부 라이브러리 |
3. 간단한 예제
(1) JDK 기본 – HttpURLConnection
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ApiExample {
public static void main(String[] args) {
String apiUrl = "http://localhost/plmetc/vault/getFloorInfo?prodNum=208618L17";
try {
URL url = new URL(apiUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
int responseCode = conn.getResponseCode();
System.out.println("Response Code : " + responseCode);
try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
StringBuilder response = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
response.append(line);
}
System.out.println("Response Data: " + response.toString());
}
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
(2) Java 11+ – HttpClient
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class ApiExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(3))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost/plmetc/vault/getFloorInfo?prodNum=208618L17"))
.timeout(Duration.ofSeconds(5))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Status Code: " + response.statusCode());
System.out.println("Body: " + response.body());
}
}
4. API 호출 시 주의사항
- 타임아웃 설정 필수 – 네트워크 지연이 서비스 전체를 멈추지 않도록.
- 예외 처리 – 연결 실패, 4xx·5xx 응답 코드 처리.
- 인증 처리 – API Key, OAuth2, JWT 등.
- 응답 데이터 파싱 – JSON → DTO 변환(Jackson, Gson).
- 성능 최적화 – 커넥션 풀, 비동기 호출(WebClient/HttpClient).
'📕 Programing > Java' 카테고리의 다른 글
| ⏱ Spring Boot에서 함수 수행시간 측정하기 – 초/분 단위 출력 (1) | 2025.07.03 |
|---|---|
| [Java] 📅 Java로 영업일만 7일 출력하는 함수 만들기 (1) | 2025.06.23 |
| ✅ Java 문자열을 | 기준으로 나누어 List로 변환하는 방법 (1) | 2025.06.18 |
| 윈도우에서 폴더를 다른 위치로 연결하는 방법 – mklink 명령어 활용하기 (0) | 2025.06.11 |
| [Java] 문자열을 "-"로 구분하여 List로 변환하기 (0) | 2025.05.28 |