우리가 사용하는 대부분의 서비스는 다른 시스템과 정보를 주고받으며 동작한다.
로그인할 때 구글 인증 창이 뜨고, 앱에서 날씨 정보를 불러오고, 심지어 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의 개념과 동작 방식, 그리고 실제 호출 예제까지 살펴보았으니
앞으로 다양한 서비스와 기술을 활용할 때 보다 깊이 있는 이해를 바탕으로 접근할 수 있을 것이다.