JAVA/JAVA 조금 더 깊게!

Java로 RESTful API 연동하기: GET, POST 요청 예제와 초보자 가이드

CodeCaine Explorer 2024. 12. 22. 10:51
728x90
반응형
SMALL

안녕하세요! 😊 오늘은 Java로 RESTful API를 연동하는 방법을 배워보겠습니다!

API는 다른 프로그램과 정보를 주고받는 다리 역할을 해요. 특히 RESTful API는 웹에서 가장 널리 사용되는 방식 중 하나입니다. 이번 글에서는 비전공자와 초보자도 이해하기 쉽게 RESTful API가 무엇인지, Java로 연동하는 방법을 간단한 예제와 함께 설명드릴게요. 끝까지 읽고 직접 따라 해보세요! 😊


RESTful API란 무엇일까요?

RESTful API는 클라이언트(우리 프로그램)와 서버(데이터 제공자) 사이에서 정보를 주고받는 규칙을 말해요.

  • REST(Representational State Transfer): 데이터를 요청하고 응답하는 스타일입니다.
  • API(Application Programming Interface): 프로그램 간에 정보를 주고받는 방법이에요.

예를 들어:

  1. 클라이언트 요청: "오늘의 날씨를 알려주세요." (HTTP 요청)
  2. 서버 응답: "오늘은 맑음, 온도는 25도입니다." (HTTP 응답)

RESTful API는 주로 HTTP 프로토콜을 사용하며, 데이터는 JSON 형식으로 주고받습니다.


Java에서 RESTful API 연동 방법

Java에서는 API 요청을 보내기 위해 HttpURLConnection 또는 최신 방식인 HttpClient(Java 11 이상)를 사용할 수 있습니다. 여기에서는 두 가지 방법을 간단히 보여드릴게요.


1. GET 요청 보내기 (HttpURLConnection)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class RestApiGetExample {
    public static void main(String[] args) {
        try {
            // 요청을 보낼 URL 지정 (샘플 API 사용)
            URL url = new URL("https://jsonplaceholder.typicode.com/posts/1");

            // HttpURLConnection 객체 생성
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            // HTTP 메서드 설정 (GET 요청)
            connection.setRequestMethod("GET");

            // 응답 코드 확인 (200 = 성공 😊)
            int responseCode = connection.getResponseCode();
            System.out.println("응답 코드: " + responseCode);

            // 응답 데이터 읽기
            if (responseCode == HttpURLConnection.HTTP_OK) { // HTTP_OK = 200
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                StringBuilder response = new StringBuilder();
                String line;

                while ((line = reader.readLine()) != null) {
                    response.append(line);
                }
                reader.close();

                // 서버 응답 출력
                System.out.println("서버 응답: " + response.toString());
            } else {
                System.out.println("😢 요청 실패!");
            }

            // 연결 종료
            connection.disconnect();
        } catch (Exception e) {
            System.out.println("😢 에러 발생: " + e.getMessage());
        }
    }
}

코드 설명

  1. URL url = new URL("https://jsonplaceholder.typicode.com/posts/1");
    • 서버와 통신할 URL을 만듭니다. 여기서는 샘플 API를 사용합니다.
  2. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    • URL과 연결합니다.
  3. connection.setRequestMethod("GET");
    • 요청 방식을 GET으로 설정합니다.
  4. BufferedReader
    • 서버에서 받은 응답 데이터를 한 줄씩 읽습니다.
  5. 결과
    • API로부터 응답받은 JSON 데이터가 화면에 출력됩니다.
  6. :

2. POST 요청 보내기 (HttpClient)

Java 11 이상에서는 HttpClient를 사용하는 것이 더 간단하고 편리합니다. POST 요청은 데이터를 서버로 보내는 작업이에요.

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class RestApiPostExample {
    public static void main(String[] args) {
        try {
            // HttpClient 생성
            HttpClient client = HttpClient.newHttpClient();

            // POST 요청 본문 (JSON 데이터)
            String json = "{\"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}";

            // HttpRequest 생성
            HttpRequest request = HttpRequest.newBuilder()
                .uri(new URI("https://jsonplaceholder.typicode.com/posts"))
                .header("Content-Type", "application/json") // 헤더 설정
                .POST(HttpRequest.BodyPublishers.ofString(json)) // JSON 데이터를 본문으로 추가
                .build();

            // 요청 보내고 응답 받기
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

            // 응답 출력
            System.out.println("응답 코드: " + response.statusCode());
            System.out.println("응답 본문: " + response.body());
        } catch (Exception e) {
            System.out.println("😢 에러 발생: " + e.getMessage());
        }
    }
}

코드 설명

  1. HttpClient client = HttpClient.newHttpClient();
    • 새로운 HTTP 클라이언트를 만듭니다.
  2. HttpRequest.newBuilder()
    • 요청을 생성하며, URL, 헤더, 본문(JSON)을 설정합니다.
  3. client.send()
    • 요청을 보내고 응답을 받습니다.
  4. 결과 : 서버에 데이터가 저장되고, 응답으로 저장된 데이터 정보가 반환됩니다.

RESTful API 연동을 위한 필수 용어 정리

  • HTTP 메서드 : 요청의 종류를 나타냅니다.
    • GET: 데이터를 요청
    • POST: 데이터를 서버로 보냄
    • PUT: 데이터를 업데이트
    • DELETE: 데이터를 삭제
  • JSON: 데이터를 주고받을 때 사용하는 가벼운 텍스트 형식. 예) {"key": "value"}
  • Header(헤더): 요청에 대한 추가 정보를 담는 부분입니다.

조금 어려워도 괜찮아요! 😊

RESTful API는 현대 프로그래밍에서 정말 중요한 기술입니다. 처음에는 복잡해 보여도, 연습하다 보면 금방 익숙해질 거예요! 💪

오늘도 끝까지 읽어주셔서 감사합니다! 😊

RESTful API 연동을 배우면 더 멋진 프로그램을 만들 수 있어요. 천천히 연습하며 한 단계씩 성장해 봅시다. 당신의 Java 여정을 응원합니다! 🌟

728x90
반응형
SMALL