[Java] Java로 다른 서버 API 호출하기

 

📌 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 호출 시 주의사항

  1. 타임아웃 설정 필수 – 네트워크 지연이 서비스 전체를 멈추지 않도록.
  2. 예외 처리 – 연결 실패, 4xx·5xx 응답 코드 처리.
  3. 인증 처리 – API Key, OAuth2, JWT 등.
  4. 응답 데이터 파싱 – JSON → DTO 변환(Jackson, Gson).
  5. 성능 최적화 – 커넥션 풀, 비동기 호출(WebClient/HttpClient).

 

Designed by JB FACTORY