Python/Python 심화

Python REST API 요청 처리와 응답 분석

임베디드 친구 2025. 8. 7. 20:17
728x90
반응형

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는 다양한 애플리케이션 개발에서 중요한 역할을 하므로, 위 내용을 기반으로 더욱 복잡한 작업을 시도해 보세요.

728x90
반응형