데이터 수집을 위한 REST API 기초
HTTP GET/POST, 헤더, 인증(API 키, Bearer), requests를 활용한 JSON 파싱을 학습합니다.
데이터 수집을 위한 REST API 기초은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
AI에서 API가 중요한 이유
모델의 성능은 데이터의 품질만큼만 좋습니다. 웹 API를 사용하면 하나의 정적인 파일에 의존하는 대신 날씨, 가격, 소셜 게시물, 공개 데이터셋과 같은 최신 구조화 데이터를 필요할 때 수집할 수 있습니다.
이 과정에서는 Python과 널리 사용되는 requests 라이브러리로 데이터를 가져와 저장합니다.
REST API란 무엇인가요
REST API는 HTTP를 통해 리소스를 제공합니다. URL(엔드포인트)로 요청을 보내면 일반적으로 JSON 형식의 데이터를 돌려받습니다.
주요 HTTP 메서드는 다음과 같습니다.
GET— 데이터 readPOST— 데이터 생성PUT/PATCH— updateDELETE— 삭제
데이터를 수집할 때는 주로 GET을 사용합니다.
첫 번째 GET 요청
requests.get(url)은 GET 요청을 보내고 응답 객체를 반환합니다. 응답에는 상태, 헤더, 본문이 들어 있습니다.
import requests
resp = requests.get("https://api.example.com/users")
print(resp.status_code) # 200
print(resp.text[:200]) # raw body as a stringresponse.status_code 확인하기
상태 코드는 요청의 성공 여부를 알려 줍니다.
200OK301/302리디렉션400잘못된 요청401/403인증 문제404찾을 수 없음429요청 제한 초과500서버 오류
resp = requests.get(url)
if resp.status_code == 200:
print("Success")
else:
print("Failed:", resp.status_code)response.json()으로 JSON 파싱하기
대부분의 API는 JSON을 반환합니다. response.json()은 본문을 Python 딕셔너리와 목록으로 자동 파싱합니다.
JSON을 직접 파싱하지 마세요. .json()이 이를 처리하고 본문이 올바른 JSON이 아니면 명확한 오류를 발생시킵니다.
resp = requests.get("https://api.example.com/users/1")
data = resp.json()
print(data["name"])
print(data["email"])params로 쿼리 매개변수 보내기
쿼리 매개변수를 사용해 요청을 필터링하고 설정합니다. 딕셔너리를 params에 전달하면 requests가 인코딩을 처리해 URL을 대신 만들어 줍니다.
이 예제는 URL에서 ?city=London&units=metric이 됩니다.
params = {"city": "London", "units": "metric"}
resp = requests.get("https://api.example.com/weather", params=params)
print(resp.url)
print(resp.json())헤더 보내기
헤더에는 콘텐츠 유형, 사용자 에이전트, API 키나 토큰과 같은 메타데이터가 들어 있습니다. 헤더를 딕셔너리로 만들어 headers에 전달합니다.
많은 API는 액세스를 위해 Authorization 헤더를 요구합니다.
headers = {
"Authorization": "Bearer YOUR_TOKEN",
"User-Agent": "my-data-collector/1.0",
}
resp = requests.get("https://api.example.com/data", headers=headers)
print(resp.json())견고한 코드를 위한 raise_for_status()
상태 코드를 직접 확인하는 대신 resp.raise_for_status()를 호출하세요. 이 메서드는 4xx 또는 5xx 응답에 대해 HTTPError를 발생시키므로 실패를 즉시 알 수 있습니다.
오류를 우아하게 처리하려면 try/except로 감싸세요.
import requests
try:
resp = requests.get(url, timeout=10)
resp.raise_for_status()
data = resp.json()
except requests.HTTPError as e:
print("HTTP error:", e)
except requests.RequestException as e:
print("Network error:", e)항상 timeout 설정하기
timeout이 없으면 멈춘 서버 때문에 스크립트가 영원히 멈출 수 있습니다. 항상 timeout을 초 단위로 지정하세요.
수천 개의 엔드포인트에 요청하는 데이터 수집 반복문에서는 timeout 누락이 작업이 멈추는 흔한 원인입니다.
resp = requests.get(url, timeout=10) # give up after 10 secondsSession으로 연결 재사용하기
requests.Session은 요청 사이에서 기본 TCP 연결을 재사용하고 헤더를 한 번만 설정할 수 있게 해 줍니다. 같은 호스트에 여러 번 호출할 때 훨씬 빠릅니다.
import requests
session = requests.Session()
session.headers.update({"Authorization": "Bearer YOUR_TOKEN"})
for uid in [1, 2, 3]:
resp = session.get(f"https://api.example.com/users/{uid}")
print(resp.json()["name"])
session.close()깔끔한 데이터 가져오기 도우미
이 패턴을 재사용 가능한 함수로 감싸세요. 세션을 설정하고, timeout을 적용하고, 오류가 발생하면 예외를 일으킨 다음, 파싱된 JSON을 반환합니다.
다음 레슨에서는 페이지네이션과 저장을 위해 이 도우미를 기반으로 확장합니다.
def fetch_json(session, url, params=None):
resp = session.get(url, params=params, timeout=10)
resp.raise_for_status()
return resp.json()빠른 확인: 견고한 요청
404 또는 500 응답이 오면 코드에서 자동으로 예외를 발생시키려고 합니다.
복습: REST API 기초
이제 HTTP를 통해 데이터를 수집할 수 있습니다.
requests.get(url, params=..., headers=...)로 요청 보내기response.status_code와raise_for_status()로 실패 감지하기response.json()으로 본문 파싱하기- 멈춤을 방지하는
timeout - 연결과 헤더를 재사용하는
requests.Session
다음 주제는 여러 페이지에 걸친 데이터셋 수집하기입니다.
자주 묻는 질문
“데이터 수집을 위한 REST API 기초” 강의는 무료인가요?
네 — “데이터 수집을 위한 REST API 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“데이터 수집을 위한 REST API 기초”에서 뭘 배우나요?
HTTP GET/POST, 헤더, 인증(API 키, Bearer), requests를 활용한 JSON 파싱을 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“데이터 수집을 위한 REST API 기초” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 데이터 수집을 위한 REST API 기초
- 대규모 데이터셋 페이지 처리 및 수집
- 수집 데이터의 효율적 저장
- 공공 데이터 API 활용