머신러닝&딥러닝

머신러닝 & 딥러닝 기초 4편 | API를 활용한 데이터 수집 (REST API)

SecLogs YJ 2026. 3. 11. 23:02
목차

1. REST API의 이해
2. REST API 구조
  2-1 URL 구조
  2-2 HTTP 메서드
  2-3 Headers와 Body
3. 공공 데이터 포털과 Open API 활용
4. API를 활용한 데이터 수집 과정
5. Python으로 REST API 호출하기

 

1. REST API의 이해

API(Application Programming Interface)는 서로 다른 프로그램이나 서비스가 데이터를 주고받을 수 있도록 만들어진 인터페이스이다.

예를 들어 날씨 앱에서 날씨 정보를 보여주는 경우, 앱이 직접 날씨 데이터를 가지고 있는 것이 아니라 기상청 서버의 API를 호출하여 데이터를 받아오는 방식으로 동작한다.

즉, API는 프로그램과 프로그램 사이에서 데이터를 요청하고 전달하는 통신 창구라고 볼 수 있다.

 

REST API(RepresenAPI(Application Programming Interface)는 서로 다른 프로그램이나 서비스가 데이터를 주고받을 수 있도록 만들어진 인터페이스이다.

예를 들어 날씨 앱에서 날씨 정보를 보여주는 경우,
앱이 직접 날씨 데이터를 가지고 있는 것이 아니라
기상청 서버의 API를 호출하여 데이터를 받아오는 방식으로 동작한다.

즉, API는 프로그램과 프로그램 사이에서 데이터를 요청하고 전달하는 통신 창구라고 볼 수 있다.tational State Transfer API)는 HTTP를 통해 Client와 Server 간 데이터를 주고받기 위한 규칙이다.

일반적으로 표준 웹 프로토콜을 사용하여 JSON 형식의 데이터를 교환한다.

 

REST API 흐름

 

REST API vs HTTP

  • REST API : 설계 방식을 정의하는 아키텍처 스타일
  • HTTP : Client와 Server 간 데이터 전송에 사용되는 프로토콜

즉, REST는 요청 방식과 응답 방식에 대한 규칙을 정의한 것이다.

모든 시스템이 완벽하게 동일하게 구현해야 되는 것은 아니며, 일반적으로 권장되는 스타일이다.


2. REST API 구조

REST API는 HTTP 프로토콜 기반으로 동작한다.

 

보통 다음 3가지 요소로 구성된다.

  • URL
  • HTTP Method
  • Header / Body

2-1 URL 구조

REST API에서는 URL을 통해 자원(Resource)에 접근한다.

 

기본적인 URL 구조는 다음과 같다.

https://도메인/path

 

예시

https://example.com/posts

 

  • /posts : 모든 게시글
  • /posts/1 : 1번 게시글

즉, 도메인에서 자원, 자원에서 특 자원의 구조로 URL이 구성된다.

 

REST API에서는 가능한 한 의미 있는 URL을 설계하는 것이 중요하다.

 

많은 API 서비스는 이러한 URL 규칙을 설명하는 API 가이드 문서를 제공한다.

공공데이터포털, Open API 서비스 등에서는 API 사용 가이드 문서를 통해 URL 구조를 설명한다.

 

2-2 HTTP 메서드

REST API에서는 HTTP 메서드와 URL을 조합하여 서버에 요청을 보낸다.

 

REST API에서 일반적으로 사용되는 HTTP 메서드

메서드 의미  추가 설명
GET  데이터 조회 데이터 조회 성공 시 데이터(JSON/XML)를 반환 + 응답코드 200 반환한다.
오류 시에는 보통 404(Not Found), 400(Bad Request) 반환한다.
POST  데이터 생성 POST 방식은 안전하지 않고 멱등성도 보장되지 않는다.
HTTP 요청 본문(body)에 데이터를 추가하여 전달한다.
PUT  데이터 수정(전체) 전체 데이터를 담아 전송하고, 지정된 URL의 기존 데이터를 교체한다.
일부 시스템에서는 해당 자원이 존재하지 않을 경우 새로운 자원을 생성하기도 한다.
PATCH  데이터 수정(부분) 전체 데이터 대신 수정할 필드만 전송한다.
DELETE  데이터  삭제 데이터 삭제 성공 시 응답 본문과 함께 응답 코드 200 반환한다.

 

*멱등성 : 동일한 요청을 여러 번 수행하더라도 서버 상태가 한 번 수행했을 때와 동일한 특성

               반복적인 요청은 최초 적용 이후 추가적인 변경을 발생시키지 않음

 

* POST 방식이 안전하지 않은 이유?

  • POST 방식이 안전하지 않다고 하는 이유는 요청을 보낼 때 서버의 데이터 상태를 변경하기 때문이다.
  • 예를 들어 POST 요청은 새로운 데이터를 생성하거나 서버의 상태를 변경한다.
  • 따라서 동일한 POST 요청을 여러 번 보내면 데이터가 여러 번 생성될 수 있다.

* POST vs GET?

구분 GET POST
목적 데이터 조회 데이터 생성
데이터 위치 URL Body
서버 상태 변경 없음 있음
멱등성 있음 없음

 

GET : URL에 데이터가 노출되기 때문에 보안성이 낮음
POST : HTTP 요청 본문(body)에 데이터가 포함되어 전달되므로 보안성이 높음

 

2-3 Headers와 Body

REST API 요청에는 Headers와 Body가 포함될 수 있다.

 

Headers

요청 또는 응답에 대한 부가 정보를 담는다.

예) 인증 정보, 데이터 형식, 요청 정보 등

 

예시

Content-Type: application/json
Authorization: API_KEY

 

Body

요청 시 서버로 전달하는 데이터이다.

보통 JSON 형식을 사용한다.

 

예시

{
  "name": "user1",
  "age": 25
}

 


3. 공공 데이터 포털과 Open API 활용

REST API를 활용하면 다양한 공공 데이터 및 Open API 데이터를 수집할 수 있다.

 

대표적인 데이터 제공 사이트

  • 공공데이터포털
  • Open API 서비스
  • KISA 보안 데이터 API

특히 공공데이터포털에서는 다양한 데이터를 제공한다.

  • 교통 데이터
  • 날씨 데이터
  • 행정 데이터
  • 통계 데이터 등

다만 보안 관련 데이터는 상대적으로 적기 때문에 KISA 등 보안 기관에서 제공하는 API를 찾아보는 것도 좋다.

 

4. API를 활용한 데이터 수집 과정

공공 데이터 포털이나 Open API를 활용한 데이터 수집 과정은 다음과 같다.

 

1) 데이터 탐색

2) API 키 발급

3) API를 이용한 데이터 수집 (Python requests 이용)

4) 데이터 전처리 (결측치 처리, 중복 데이터 제거, 데이터 형식 반환)

5) 데이터 분석 (Pandas, Matplotlib 등 이용)

6) 머신러닝 / 딥러닝 모델 학습


5. Python으로 REST API 호출하기

Python에서는 requests 라이브러리를 이용해 REST API를 쉽게 호출할 수 있다.

 

예시

import requests

url = "https://api.example.com/posts"

response = requests.get(url)
data = response.json()

print(data)
  • requests.get() : API 서버에 GET 요청을 보낸다.
  • response : 서버로부터 받은 응답 객체
  • response.json() : JSON 데이터를 Python 딕셔너리 형태로 변환

 👉 머신러닝 & 딥러닝 기초 5편 | 데이터 저장 방법 (CSV, Excel, JSON, SQLite)