파이썬 requests로 REST API 호출하는 법은? 초보자 실습방법은?

매일 아침 30분씩 엑셀에 데이터를 복붙하던 노가다를 끝내다

매일 아침 출근하면 가장 먼저 하던 일이 여러가지 정보를 수집하는 것이었습니다. 근뎅 단순 반복 작업에 30분씩 버려지는 게 너무 아까워 파이썬으로 자동화를 해보겠다고 결심했죠. 그런데 막상 구글링을 해보니 ‘REST API’, ‘JSON 파싱’, ‘HTTP GET/POST’ 같은 외계어들이 난무했습니다. it라고는 1도 모르는 비전공자인 저에게는 너무 큰 벽이었고, 공식 문서의 설명은 더더욱 이해하기 힘들었습니다. 하지만 포기하지 않고 파이썬에서 가장 직관적이라는 requests 라이브러리를 무작정 파고들었습니다. 그 결과, 지금은 단 10줄의 코드로 엑셀 다운로드 작업을 1초 만에 끝내고 있습니다. 저처럼 ‘API’라는 단어만 들어도 식은땀이 나는 초보자분들을 위해, 제가 직접 부딪히며 깨달은 가장 쉽고 확실한 REST API 호출 실습에 대해서 알려드려보려고 합니다.


목차


1. 코딩 초보의 API 자동화 테스트 환경

복잡한 백엔드 서버 구축이나 데이터베이스 연동은 필요 없습니다. 우리가 필요한 건 인터넷 브라우저가 하는 일을 파이썬이 대신하게 만드는 가벼운 환경입니다. 저는 안전한 연습을 위해 아래와 같은 세팅에서 테스트를 진행했습니다.

  • 운영체제 및 에디터: Windows 11 Pro, VS Code (Visual Studio Code)
  • 사용 언어: Python 3.12 (구버전도 호환되지만 최신 버전을 권장합니다)
  • 사용 라이브러리: requests (파이썬 표준 라이브러리인 urllib보다 수백 배 직관적이고 코드가 짧습니다)
  • 테스트용 타겟 API: JSONPlaceholder (가상의 게시판 데이터를 무료로 제공해주는 개발자용 테스트 API 서버입니다. 별도의 회원가입이나 인증 키 발급이 필요 없어 초보자 연습용으로 최고입니다.)

2. 단계별 실습: 10줄 코드로 가상 서버 데이터 가져오기

본격적으로 파이썬 코드 작성을 시작하겠습니다. 인터넷 주소창에 URL을 치고 들어가서 데이터를 읽어오는 행위를 ‘GET’, 웹사이트에서 회원가입 폼을 작성해 서버로 밀어넣는 행위를 ‘POST’라고 이해하시면 아주 쉽습니다.

1단계: requests 패키지 설치하기

VS Code 하단의 터미널을 열고 아래 명령어를 입력하여 라이브러리를 설치합니다. 이미 설치되어 있다면 ‘Requirement already satisfied’라는 문구가 뜹니다.

pip install requests

2단계: GET 요청으로 데이터 가져오기 (Read)

새로운 파이썬 파일(api_test.py)을 만들고 아래 코드를 작성합니다. 서버에서 1번 게시글의 정보를 가져오는 매우 기초적이고 핵심적인 코드입니다.

import requests

1. 데이터를 요청할 API 주소 (엔드포인트)
url = "https://jsonplaceholder.typicode.com/posts/1"

2. GET 방식으로 데이터 요청하기
print("서버에 데이터를 요청하는 중입니다...")
response = requests.get(url)

3. 서버의 응답 상태 확인 (200이면 정상)
if response.status_code == 200:
print("✅ 통신 성공!")

# 4. JSON 형태의 응답 데이터를 파이썬 딕셔너리로 변환
data = response.json()

print("--- [수신된 데이터] ---")
print(f"제목: {data['title']}")
print(f"내용: {data['body']}")
else:
print(f"❌ 통신 실패: 에러 코드 {response.status_code}")

3단계: POST 요청으로 새로운 데이터 전송하기 (Create)

이번에는 우리가 만든 데이터를 서버에 전송해 보겠습니다. GET과 달리 데이터를 담아 보낼 payload(내용물)가 필요합니다.

import requests

url = "https://jsonplaceholder.typicode.com/posts"

서버로 보낼 나의 데이터 세팅
my_data = {
"title": "파이썬 자동화 테스트",
"body": "이것은 requests 모듈을 이용한 POST 요청 테스트입니다.",
"userId": 999
}

POST 방식으로 데이터 전송하기
response = requests.post(url, json=my_data)

if response.status_code == 201: # POST 성공 시 보통 201(Created) 코드가 반환됩니다.
print("✅ 데이터 전송 성공!")
print("서버 응답 결과:", response.json())

💡 여기서 주의할 점: User-Agent와 Timeout 설정의 중요성

연습용 API가 아닌 실제 네이버나 공공 데이터 API를 호출할 때, 아무 옵션 없이 requests.get()만 날리면 서버에서 “어? 이거 사람이 아니라 파이썬 봇(Bot)이네? 차단해!”라며 403 에러를 뱉어내는 경우가 많습니다. 이를 방지하기 위해 헤더(Headers)에 ‘User-Agent’ 값을 넣어 마치 크롬 브라우저에서 접속한 것처럼 위장해야 합니다. 또한, 서버가 먹통일 때 파이썬 프로그램이 무한정 대기하는 것을 막기 위해 timeout=5 (5초 한도) 설정을 반드시 습관화하는 것이 실무의 핵심입니다.

3. 내가 직접 겪은 뼈아픈 에러 2가지와 완벽 탈출구

튜토리얼 코드는 복사하면 1초 만에 실행되지만, 실무 서버와 통신할 때는 예상치 못한 에러들이 저를 괴롭혔습니다. 가장 많은 시간을 허비했던 두 가지 에러를 공유합니다.

첫 번째 참사: JSONDecodeError – 겉만 JSON이고 속은 HTML일 때

공공 데이터 API를 호출하고 평소처럼 data = response.json()을 실행했는데, 갑자기 프로그램이 붉은 에러를 뿜으며 죽어버렸습니다. 분명히 API 명세서에는 JSON으로 준다고 되어 있었거든요. 원인을 파악해 보니, 서버 쪽에 일시적인 에러가 발생해서 500 상태 코드와 함께 ‘서버 점검 중’이라는 HTML 웹페이지를 응답으로 내려보냈기 때문이었습니다. 파이썬은 HTML 텍스트를 JSON으로 파싱하려다 충돌이 난 것이죠. 이 경험 이후, 저는 코드를 짤 때 무조건 if response.status_code == 200: 이라는 방어막을 먼저 치고, 그래도 불안하면 response.text를 먼저 print()로 찍어 눈으로 직접 확인하는 습관을 들였습니다.

두 번째 위기: 프로그램이 멈춰버리는 무한 대기 (Hanging) 현상

한 번은 크롤링 겸 API 호출 봇을 만들어 서버에 올려두고 퇴근했는데, 다음 날 출근해 보니 첫 번째 줄에서 멈춘 채 프로그램이 다운되어 있었습니다. 에러 메시지도 없었죠. 타겟 서버가 너무 느려서 응답을 주지 않고 있었는데, 파이썬의 requests 모듈은 기본적으로 타임아웃(시간 제한)이 무제한으로 설정되어 있기 때문이었습니다. 즉, 상대방이 전화를 끊지 않으면 24시간 내내 수화기를 들고 기다리는 멍청한 상태가 된 것입니다. 앞서 강조한 대로 requests.get(url, timeout=10) 처럼 10초 제한을 두고, try-except 구문으로 예외 처리를 감싸주어 이 악몽에서 탈출할 수 있었습니다.

4. 파이썬 자동화 도입 후 체감한 놀라운 업무 시간 단축

이 기본적인 requests 모듈 사용법을 익히고 나서, 제 업무 일상은 완전히 뒤바뀌었습니다.

  • 시간의 압축: 매일 아침 웹사이트를 돌아다니며 환율, 주가 데이터를 복사-붙여넣기 하던 30분의 지루한 작업이, 파이썬 스크립트 실행 버튼 하나 누르면 단 1.5초 만에 완료됩니다.
  • 휴먼 에러(Human Error) 제로: 수동으로 데이터를 옮기다 보면 칸이 밀리거나 소수점을 빼먹는 실수가 잦아 팀장님께 혼나기 일쑤였지만, API가 주는 정형화된 JSON 데이터를 그대로 파이썬 판다스(Pandas)로 엑셀에 꽂아 넣으니 데이터 누락이나 오타 확률이 0%로 수렴했습니다.
  • 업무 확장성: API 통신의 원리를 깨우치고 나니, 슬랙(Slack) API를 연결해 특정 조건이 되면 제 메신저로 알림을 보내는 봇까지 스스로 만들 수 있게 되었습니다.

5. 3줄 요약 및 이런 분들께 강력 추천합니다

오늘의 REST API 실무 호출 가이드를 요약하자면 다음과 같습니다.

  1. 파이썬에서 API 통신을 할 때는 pip install requests 라이브러리가 가장 직관적이고 강력합니다.
  2. 데이터를 읽어올 때는 GET, 전송할 때는 POST 방식을 사용하며, 결과는 .json()으로 쉽게 변환합니다.
  3. 실무 스크립트를 작성할 때는 반드시 Headers(User-Agent)Timeout 옵션을 넣어야 프로그램이 죽지 않습니다.

이 방법은 매일 아침 반복적인 데이터 수집 업무에 지쳐있는 직장인, 퍼포먼스 마케팅 데이터를 한곳에 모으고 싶은 마케터, 혹은 ChatGPT 같은 외부 AI API를 내 서비스에 연동해 보고 싶은 코딩 입문자분들께 제 경험을 걸고 강력하게 추천합니다. 처음엔 외계어 같지만 딱 한 번만 200 OK 응답을 받아보면 그 쾌감에 중독될 것입니다. 반면, 단순히 웹 브라우저를 마우스로 클릭하고 화면을 캡처하는 식의 매크로가 필요한 분이라면 API보다는 셀레니움(Selenium)을 배우시는 것이 더 목적에 맞을 수 있습니다.