카테고리 없음

API란 무엇인가?

ehdbs7908 2025. 12. 3. 22:56

우리가 사용하는 대부분의 서비스는 다른 시스템과 정보를 주고받으며 동작한다.

로그인할 때 구글 인증 창이 뜨고, 앱에서 날씨 정보를 불러오고, 심지어 SNS에서 자동 번역이 작동하는 것까지

모두 API 덕분이다.

 

이번 글에서는 API의 기본 개념부터 실제 예시, 사용 방식까지

"가장 쉬운 언어 + 실무형 관점"으로 설명한다.

 

 

  • API란 무엇인가?

API(Application Programming Interface)는 프로그램끼리 서로 대화할 수 있게 해주는 인터페이스이다.

 

쉽게 말해, 한 프로그램이 다른 프로그램에게 ‘요청(Request)’을 보내고, 응답(Response)을 받기 위한 규칙과 도구의 모음이다.

 

아주 쉬운 비유

  • 식당: 손님(클라이언트)은 요리를 직접 하지 않는다
  • API: 주문서 역할
  • 주방(서버): 요청을 받아 결과를 만들어 제공

→  API라는 주문서를 통해 원하는 기능만 요청하고 결과만 받으면 된다.

 

 

  • API가 왜 필요한가?

1. 프로그램끼리 표준 방식으로 데이터를 주고받음

2. 기능을 다시 만들 필요 없이 가져다 쓰면 됨

3. 보안적으로 안전함(서버 내부 구조를 숨길 수 있음)

4. 유지보수와 확장이 쉬움

 

예시)

  • 지도 기능을 쓰고 싶다 → 구글 맵 API
  • 날씨 정보 필요하다 → OpenWeather API
  • 로그인 기능 필요하다 → 카카오/네이버 OAuth API

API가 없으면 모든 기능을 직접 만들어야 하므로 개발 생산성이 매우 낮아진다.

 

 

  • API 동작 구조 (요청 ~ 응답)

API는 보통 다음과 같은 흐름으로 움직인다.

 

[Client] → (요청 Request) → [API 서버]

[API서버] → (응답 Response) → [Client]

 

요청(Request)에 들어가는 것

  • URL(엔드포인트)
  • HTTP Method(GET, POST, PUT, DELETE 등)
  • Query Parameter / Body
  • Headers(API Key, Token 등)

응답(Response)에 들어오는 것

  • Status Code(200 OK, 404 Not Found 등)
  • JSON 데이터
  • 에러 메시지

 

  • API의 종류

1. Public API (공개 API)

누구나 사용할 수 있는 API → 예: 오픈 날씨 API, 카카오 지도 API

 

2. Private API(비공개 API)

회사 내부 시스템끼리 사용하는 API → 예: 사내 주문 시스템 API, 내부 결제 API

 

3. REST API (가장 많이 쓰임)

HTTP 기반으로 자원(Resource)을 명확히 나타내는 API 방식
URL로 의미 파악이 쉬움

 

예시:

GET /users  
POST /users  
GET /users/10  
DELETE /users/10

 

4. SOAP API

XML 기반의 예전 방식, 은행/금융 등 안정성 필요한 곳에서 사용됨

 

5. GraphQL API

클라이언트가 필요한 데이터만 정확히 요청할 수 있는 최신 방식

 

 

  • 실제 API 예시 - 날씨 정보 가져오기 API

예를 들어, 아래 URL에 GET 요청을 보내면:

https://api.openweathermap.org/data/2.5/weather?q=Seoul&appid={API_KEY}

 

서버는 이런 JSON 데이터를 응답한다:

{
  "name": "Seoul",
  "main": {
    "temp": 4.12,
    "humidity": 52
  },
  "weather": [
    { "description": "clear sky" }
  ]
}

 

이처럼 API는 외부 서비스의 데이터를 가져오는 창구 역할을 한다.

 

 

  • API 호출 코드 예제 (Java)

HttpURLConnection 사용 (JDK 기본 방식)

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) {
        try {
            String apiUrl = "https://api.github.com/repos/octocat/Hello-World";

            URL url = new URL(apiUrl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            conn.setRequestMethod("GET"); // GET 요청
            conn.setRequestProperty("User-Agent", "Mozilla/5.0"); // GitHub API는 User-Agent 필수

            int responseCode = conn.getResponseCode();
            System.out.println("Response Code: " + responseCode);

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));

            String inputLine;
            StringBuilder response = new StringBuilder();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }

            in.close();
            conn.disconnect();

            System.out.println("Response JSON:");
            System.out.println(response.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

실행하면 GitHub API의 Json 데이터를 그대로 출력한다.

 

 

 

  • 정리 - API는 현대 개발의 핵심

API를 이해하면 다음이 가능해진다.

  • 외부 서비스 기능을 내 프로그램에 그대로 가져올 수 있음
  • 백엔드/프론트 간 통신 구조를 이해할 수 있음
  • 데이터 수집과 자동화 프로젝트를 쉽게 진행 가능
  • 네트워크와 서버 개발에 필수적인 개념을 선행 학습

 

API는 현대 소프트웨어 개발의 기반이 되는 핵심 개념이다.

다양한 서비스와 데이터를 연결하고, 프로그램 간 상호작용을 가능하게 하는 API를 이해하는 것은

웹·모바일·데이터 분석 등 어떤 분야로 나아가더라도 필수적인 밑바탕이 된다.

 

이번 글을 통해 API의 개념과 동작 방식, 그리고 실제 호출 예제까지 살펴보았으니

앞으로 다양한 서비스와 기술을 활용할 때 보다 깊이 있는 이해를 바탕으로 접근할 수 있을 것이다.