Python REST API 요청 처리와 응답 분석
REST API란?
REST API(Representational State Transfer Application Programming Interface)는 웹 애플리케이션과 서버 간의 데이터를 주고받는 데 사용되는 인터페이스입니다. REST API는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 활용하여 클라이언트와 서버 간에 리소스를 교환하는 데 최적화되어 있습니다.
이 포스팅에서는 Python으로 REST API 요청을 처리하고, 응답을 분석하는 방법을 다룹니다. 주요 라이브러리로는 requests
를 사용하며, 실습 예제를 포함하여 설명합니다.
Python에서 REST API 요청 처리하기
Python에서는 requests
라이브러리를 사용하여 REST API 요청을 간단히 처리할 수 있습니다. requests
는 직관적인 문법과 강력한 기능을 제공하며, HTTP 요청을 쉽게 생성하고 응답을 처리할 수 있습니다.
requests
라이브러리 설치
먼저 requests
라이브러리를 설치해야 합니다. 아래 명령어를 사용하세요:
pip install requests
기본적인 GET 요청 처리
GET 요청은 서버에서 데이터를 가져오는 데 사용됩니다. 아래는 JSONPlaceholder API를 사용하여 데이터를 가져오는 예제입니다:
예제: 사용자 데이터 가져오기
import requests
# API URL
url = "https://jsonplaceholder.typicode.com/users"
# GET 요청
response = requests.get(url)
# 응답 상태 코드 확인
if response.status_code == 200:
# JSON 데이터 파싱
users = response.json()
for user in users:
print(f"Name: {user['name']}, Email: {user['email']}")
else:
print(f"Failed to retrieve data. Status code: {response.status_code}")
출력 예시:
Name: Leanne Graham, Email: Sincere@april.biz
Name: Ervin Howell, Email: Shanna@melissa.tv
...
POST 요청으로 데이터 전송하기
POST 요청은 서버에 데이터를 생성하거나 전송할 때 사용됩니다.
예제: 새로운 사용자 생성
import requests
# API URL
url = "https://jsonplaceholder.typicode.com/users"
# 전송할 데이터
new_user = {
"name": "John Doe",
"email": "john.doe@example.com",
"phone": "123-456-7890"
}
# POST 요청
response = requests.post(url, json=new_user)
# 응답 확인
if response.status_code == 201:
created_user = response.json()
print("Created user:", created_user)
else:
print(f"Failed to create user. Status code: {response.status_code}")
출력 예시:
Created user: {'id': 11, 'name': 'John Doe', 'email': 'john.doe@example.com', 'phone': '123-456-7890'}
응답 데이터 분석하기
REST API 응답은 주로 JSON 형식으로 제공됩니다. Python의 json
모듈을 사용하면 데이터를 쉽게 분석할 수 있습니다.
예제: 특정 사용자 정보 분석
import requests
# API URL
url = "https://jsonplaceholder.typicode.com/users/1"
# GET 요청
response = requests.get(url)
if response.status_code == 200:
user = response.json()
print("User Details:")
print(f"Name: {user['name']}")
print(f"Email: {user['email']}")
print(f"Address: {user['address']['street']}, {user['address']['city']}")
else:
print(f"Failed to retrieve user. Status code: {response.status_code}")
출력 예시:
User Details:
Name: Leanne Graham
Email: Sincere@april.biz
Address: Kulas Light, Gwenborough
오류 처리 및 예외 상황 관리
API 호출 중 예외 상황을 처리하는 것은 중요합니다. try-except
구문을 사용하여 네트워크 오류 등을 관리할 수 있습니다.
예제: 오류 처리 추가하기
import requests
# API URL
url = "https://jsonplaceholder.typicode.com/invalid-endpoint"
try:
# GET 요청
response = requests.get(url)
response.raise_for_status() # HTTP 오류 발생 시 예외 처리
data = response.json()
print(data)
except requests.exceptions.HTTPError as http_err:
print(f"HTTP error occurred: {http_err}")
except requests.exceptions.RequestException as req_err:
print(f"Request error occurred: {req_err}")
실습: 간단한 REST API 클라이언트 만들기
이제까지 배운 내용을 바탕으로 간단한 REST API 클라이언트를 만들어 보겠습니다. 이 클라이언트는 사용자를 조회하고 생성하는 기능을 제공합니다.
예제 코드: REST API 클라이언트
import requests
def get_users():
url = "https://jsonplaceholder.typicode.com/users"
response = requests.get(url)
if response.status_code == 200:
return response.json()
else:
print(f"Failed to retrieve users. Status code: {response.status_code}")
return []
def create_user(name, email, phone):
url = "https://jsonplaceholder.typicode.com/users"
new_user = {
"name": name,
"email": email,
"phone": phone
}
response = requests.post(url, json=new_user)
if response.status_code == 201:
return response.json()
else:
print(f"Failed to create user. Status code: {response.status_code}")
return None
if __name__ == "__main__":
print("Fetching users...")
users = get_users()
for user in users:
print(f"{user['id']}: {user['name']} - {user['email']}")
print("\nCreating a new user...")
created_user = create_user("Alice Smith", "alice.smith@example.com", "987-654-3210")
if created_user:
print("Created User:", created_user)
결론
이 포스팅에서는 Python의 requests
라이브러리를 사용하여 REST API 요청을 처리하고, 응답 데이터를 분석하는 방법을 다뤘습니다. 실습 예제를 통해 GET 및 POST 요청을 처리하는 방법과 예외 상황을 다루는 방법을 배웠습니다. REST API는 다양한 애플리케이션 개발에서 중요한 역할을 하므로, 위 내용을 기반으로 더욱 복잡한 작업을 시도해 보세요.
'Python > Python 심화' 카테고리의 다른 글
Python SQLite와 연동하기 (0) | 2025.08.09 |
---|---|
Python WebSockets를 이용한 실시간 통신 (0) | 2025.08.08 |
Python asyncio를 활용한 비동기 네트워크 통신 (0) | 2025.08.06 |
Python socket 모듈을 이용한 네트워크 프로그래밍 (0) | 2025.08.05 |
웹 스크래핑을 위한 Python BeautifulSoup와 Scrapy (0) | 2025.08.04 |