
Python requests 완벽 가이드 | API 호출부터 JSON 응답 처리까지 쉽게 정리
API를 공부하다 보면 결국 한 번쯤 직접 요청을 보내보고 싶어집니다. 이때 Python에서 가장 많이 사용하는 라이브러리 중 하나가 바로 requests입니다.
예를 들어 이런 작업을 할 때 requests를 사용할 수 있습니다.
날씨 API 호출
네이버 API 연동
공공데이터 API 조회
AI API 요청
쿠팡 API 상품 정보 조회
내 사이트 서버 상태 확인
웹사이트 운영자 입장에서 보면 Python requests는 단순히 개발 공부용 도구가 아니라, 반복 작업을 자동화하거나 외부 데이터를 가져오는 데 매우 유용한 도구입니다.
이번 글에서는 Python requests 사용법, API 호출 방법, GET 요청과 POST 요청, JSON 응답 처리, 오류 해결법까지 초보자 기준으로 쉽게 정리해보겠습니다.
Python requests란?
Python requests는 Python에서 HTTP 요청을 쉽게 보낼 수 있도록 도와주는 라이브러리입니다.
쉽게 말하면, Python 코드로 웹사이트나 API 서버에 요청을 보내고 응답을 받는 도구 입니다.
브라우저에서 URL을 입력하면 웹페이지가 열리듯이, requests를 사용하면 Python 코드로 서버에 요청을 보낼 수 있습니다.
import requests
response = requests.get("https://example.com")
print(response.status_code)
이 코드 한 줄만으로도 특정 주소에 접속하고, 서버 응답 상태를 확인할 수 있습니다.
requests는 API 호출을 처음 연습할 때 가장 접근성이 좋은 Python 라이브러리입니다. 복잡한 설정 없이 바로 GET 요청과 POST 요청을 테스트할 수 있습니다.
Python requests는 왜 필요할까?
특정 URL로 요청을 보낸다.
서버에서 응답을 받는다.
JSON 데이터를 확인한다.
필요한 값만 추출한다.
오류가 있으면 상태코드를 확인한다.
이 과정을 Python 코드로 처리할 수 있게 도와주는 것이 requests입니다.
예를 들어 블로그 운영자가 API를 활용한다면 다음과 같은 자동화가 가능합니다.
| 활용 예시 | 설명 |
|---|---|
| 네이버 API | 검색 결과, 블로그 데이터 조회 |
| 날씨 API | 지역별 날씨 정보 가져오기 |
| AI API | 글 초안 생성, 요약, 분류 |
| 쿠팡 API | 상품 정보 조회 및 정리 |
| 사이트 점검 | 내 사이트 응답 코드 확인 |
즉, Python requests 사용법을 익히면 단순한 API 호출부터 자동화 프로그램 제작까지 연결할 수 있습니다.
requests 설치 방법
requests는 기본 Python에 포함되어 있지 않을 수 있으므로 먼저 설치해야 합니다.
pip install requests
설치가 끝났다면 Python 파일에서 다음처럼 불러옵니다.
import requests
정상적으로 오류가 없다면 사용할 준비가 끝난 것입니다.
Python requests 사용 방법 Step-by-Step
처음 API 호출을 연습할 때는 아래 순서대로 진행하면 좋습니다.
1. API 문서 확인하기
API를 사용하기 전에는 반드시 문서를 확인해야 합니다.
확인할 내용은 다음과 같습니다.
요청 URL
요청 방식
필요한 파라미터
API Key 필요 여부
응답 형식
호출 제한
API 문서를 보지 않고 코드를 작성하면 대부분 오류가 발생합니다.
2. GET 요청 보내기
GET 요청은 데이터를 조회할 때 사용합니다.
import requests
url = "https://api.example.com/users"
response = requests.get(url)
print(response.status_code)
print(response.text)
여기서 status_code는 HTTP 상태코드입니다.
200이면 성공
404면 주소 오류
500이면 서버 오류
3. Query Parameter 전달하기
API 호출 시 검색어나 옵션을 함께 보내야 할 때가 있습니다.
import requests
url = "https://api.example.com/search"
params = {
"keyword": "python",
"page": 1
}
response = requests.get(url, params=params)
print(response.url)
print(response.json())
위 코드는 실제로 다음과 비슷한 요청을 보냅니다.
https://api.example.com/search?keyword=python&page=1
URL 뒤에 직접 ?keyword=python&page=1을 붙이는 것보다 params를 사용하는 것이 더 안전하고 관리하기 쉽습니다.
4. POST 요청 보내기
POST 요청은 데이터를 서버로 전송할 때 사용합니다.
예를 들어 로그인, 글 작성, 주문 생성 같은 작업에 사용됩니다.
import requests
url = "https://api.example.com/posts"
data = {
"title": "Python requests 가이드",
"content": "API 호출 예제입니다."
}
response = requests.post(url, json=data)
print(response.status_code)
print(response.json())
json=data를 사용하면 Python 딕셔너리를 JSON 형식으로 전송할 수 있습니다.
5. Header 추가하기
API Key나 인증 토큰이 필요한 경우 Header를 사용합니다.
import requests
url = "https://api.example.com/user"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
API Key 방식이라면 다음처럼 사용할 수도 있습니다.
headers = {
"X-API-KEY": "YOUR_API_KEY"
}
API마다 인증 방식이 다르기 때문에 문서를 꼭 확인해야 합니다.
JSON 응답 처리하기
대부분의 REST API는 JSON 응답을 반환합니다.
import requests
url = "https://api.example.com/products/1"
response = requests.get(url)
data = response.json()
print(data)
print(data["name"])
예를 들어 응답이 아래와 같다면,
{
"id": 1,
"name": "Keyboard",
"price": 59000
}
data["name"]으로 상품명을 가져올 수 있습니다.
print(data["name"])
결과:
Keyboard
무료 API vs 유료 API 비교
requests 자체는 무료 라이브러리입니다. 하지만 requests로 호출하는 API는 무료일 수도 있고 유료일 수도 있습니다.
| 구분 | 무료 API | 유료 API |
|---|---|---|
| 비용 | 무료 | 사용량 기반 과금 |
| 호출 제한 | 낮은 편 | 높은 편 |
| 안정성 | 제한적일 수 있음 | 상대적으로 안정적 |
| 응답 속도 | 보통 | 빠른 경우 많음 |
| 활용도 | 테스트, 학습용 | 실서비스, 자동화 |
| 공공데이터, 무료 날씨 API | AI API, 상용 검색 API |
처음에는 무료 API로 Python requests 사용법을 연습하고, 이후 실제 서비스에서는 유료 API의 호출 제한과 비용 구조를 확인하는 것이 좋습니다.
핵심 개념 정리
Python requests를 제대로 사용하려면 아래 개념을 함께 이해해야 합니다.
| 개념 | 설명 |
|---|---|
| URL | 요청을 보낼 API 주소 |
| Method | GET, POST 같은 요청 방식 |
| Params | URL에 붙는 검색 조건 |
| Body | POST 요청으로 보내는 데이터 |
| Headers | 인증 정보, 데이터 형식 |
| JSON | API 응답에서 가장 많이 쓰는 데이터 형식 |
| Status Code | 요청 성공/실패를 알려주는 코드 |
이 개념들은 API 호출을 할 때 계속 등장합니다.
자주 발생하는 오류 및 해결법
1. ModuleNotFoundError: No module named 'requests'
requests가 설치되지 않았을 때 발생합니다.
해결 방법:
pip install requests
2. 401 Unauthorized
인증 실패 오류입니다.
원인:
API Key 누락
API Key 오타
토큰 만료
해결 방법:
API Key 재확인
Header 형식 확인
토큰 재발급
3. 404 Not Found
요청 URL이 잘못되었을 때 발생합니다.
해결 방법:
API 주소 확인
엔드포인트 오타 확인
/users/1처럼 경로가 맞는지 확인
4. 429 Too Many Requests
호출 제한을 초과했을 때 발생합니다.
해결 방법:
요청 간격 늘리기
반복문에
time.sleep()추가유료 플랜 검토
import time
for i in range(10):
response = requests.get("https://api.example.com/data")
time.sleep(1)
5. JSONDecodeError
응답이 JSON 형식이 아닐 때 발생할 수 있습니다.
예를 들어 서버가 HTML 오류 페이지를 반환했는데 response.json()을 호출하면 오류가 날 수 있습니다.
해결 방법:
print(response.status_code)
print(response.text)
먼저 응답 내용을 확인한 뒤 JSON인지 판단하는 것이 좋습니다.
실전 활용 팁
1. 상태코드 먼저 확인하기
API 호출 후 바로 response.json()을 실행하기보다 상태코드를 먼저 확인하는 습관이 좋습니다.
if response.status_code == 200:
print(response.json())
else:
print("오류 발생:", response.status_code)
2. timeout 설정하기
서버 응답이 너무 오래 걸릴 수 있으므로 timeout을 설정하는 것이 좋습니다.
response = requests.get(url, timeout=5)
3. API Key는 코드에 직접 넣지 않기
API Key를 코드에 그대로 적으면 보안상 좋지 않습니다.
실무에서는 환경변수나 .env 파일을 사용하는 것이 좋습니다.
import os
api_key = os.getenv("API_KEY")
4. 반복 호출은 조심하기
API를 반복 호출할 때는 호출 제한을 반드시 확인해야 합니다.
특히 AI API, 쇼핑 API, 검색 API는 비용이 발생하거나 제한에 걸릴 수 있습니다.
자동화 프로그램을 만들 때는 “몇 초마다 요청할 것인지”, “하루 최대 몇 번 호출할 것인지”를 먼저 정해두는 것이 좋습니다.
이런 사람에게 추천합니다
Python requests는 이런 사람에게 특히 추천합니다.
Python으로 API 호출을 연습하고 싶은 사람
REST API를 직접 테스트해보고 싶은 사람
웹사이트 운영 자동화를 만들고 싶은 사람
네이버 API, 날씨 API, AI API를 사용하고 싶은 사람
쿠팡 API 같은 외부 데이터를 활용하고 싶은 사람
개발 입문 단계에서 HTTP와 JSON을 함께 익히고 싶은 사람
마무리
Python requests는 API 입문자가 가장 먼저 익히기 좋은 라이브러리입니다.
핵심만 정리하면 다음과 같습니다.
requests.get()은 데이터 조회requests.post()는 데이터 전송params는 URL 검색 조건json은 요청 본문 데이터headers는 인증 정보response.json()은 JSON 응답 처리status_code는 요청 성공 여부 확인
처음에는 단순한 GET 요청부터 연습해보는 것이 좋습니다. 그 다음 POST 요청, Header 인증, JSON 응답 처리, 오류 해결 순서로 확장하면 API 흐름을 훨씬 쉽게 이해할 수 있습니다. Python requests 사용법을 익혀두면 API 호출뿐만 아니라 웹 자동화, 데이터 수집, 서버 점검, AI API 연동까지 다양한 작업에 활용할 수 있습니다.
첫 댓글을 남겨보세요.