[java] Java Jersey에서 동적으로 요청을 생성하여 외부 API와 통신하는 방법은?

Java에서 외부 API와 통신하기 위해 Jersey 라이브러리를 사용하는 방법에 대해 알아보겠습니다. Jersey는 RESTful 웹 서비스를 개발하기 위한 Java 프레임워크로, 강력한 클라이언트로도 알려져 있습니다.

먼저, Jersey를 프로젝트에 추가하기 위해 Maven 또는 Gradle과 같은 의존성 관리 도구를 사용할 수 있습니다. 아래는 Maven을 사용하여 Jersey를 추가하는 예시입니다.

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.31</version>
</dependency>

Jersey를 추가한 후, 외부 API와의 통신을 위한 동적 요청을 생성해야 합니다. 예를 들어 GET 요청을 보내고 응답을 받기 위해서는 아래와 같이 코드를 작성할 수 있습니다.

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

public class APIClient {
    public static void main(String[] args) {
        // 클라이언트 생성
        Client client = ClientBuilder.newClient();
        
        // API 엔드포인트 설정
        WebTarget target = client.target("http://api.example.com");
        
        // 동적 요청 생성
        Invocation.Builder builder = target.path("resource")
                .queryParam("param1", "value1")
                .queryParam("param2", "value2")
                .request(MediaType.APPLICATION_JSON);
        
        // GET 요청 보내기
        Response response = builder.get();
        
        // 응답 처리
        if(response.getStatus() == 200) {
            String responseBody = response.readEntity(String.class);
            System.out.println(responseBody);
        } else {
            System.out.println("Request failed with status: " + response.getStatus());
        }
        
        // 클라이언트 닫기
        client.close();
    }
}

위의 예제에서는 Client를 생성하고, WebTarget을 사용하여 API의 엔드포인트를 설정합니다. 동적인 요청을 생성하기 위해 queryParam 메소드를 사용하여 쿼리 매개 변수를 추가하고, request 메소드를 사용하여 요청의 미디어 타입을 설정합니다.

요청을 보내기 위해 get 메소드를 호출하고, Response 객체를 받습니다. 응답을 처리하기 위해 getStatus 메소드로 상태 코드를 확인하고, readEntity 메소드로 응답 본문을 읽습니다.

위 예제는 GET 요청을 보내는 방법을 보여주었지만, POST, PUT, DELETE 등의 다른 HTTP 메소드를 사용할 수도 있습니다.

이와 같이 Java Jersey를 사용하여 외부 API와 동적으로 통신하는 방법을 알아보았습니다. Jersey의 다양한 기능을 활용하여 데이터를 읽고 쓰고 수정하는 작업을 수행할 수 있습니다. Jersey 공식 문서를 참조하여 API와 상호 작용하는 더 많은 방법을 알아보시기 바랍니다.