Python requests 라이브러리로 외부 API 호출하는 실전 코드 예제

Python의 requests 라이브러리를 사용해 외부 API를 호출하고 JSON 응답 데이터를 처리하는 실전 예제와 예외 처리 방법을 안내합니다.

핵심 요약

Python의 requests 라이브러리는 HTTP 요청을 가장 직관적으로 보낼 수 있는 도구입니다. 이 글에서는 공개 API를 호출해 데이터를 가져오고, 오류를 처리하는 전체 코드를 다룹니다.

1. 실행 환경 및 사전 준비

관련 글: requests 라이브러리 심화 가이드

코드를 실행하려면 Python 3.x 버전이 설치되어 있어야 합니다. 외부 API와 통신하기 위해 requests 패키지를 별도로 설치해야 합니다. 터미널이나 명령 프롬프트에서 아래 명령어를 실행하세요.

BASH

pip install requests

2. 완성된 Python API 호출 코드

아래 코드는 무료 테스트 API인 JSONPlaceholder에 GET 요청을 보내고, 반환된 사용자 목록 데이터 중 이름과 이메일을 추출해 출력합니다.

api_client.pyPYTHON

import requests

def fetch_users():
    url = "https://jsonplaceholder.typicode.com/users"
    try:
        response = requests.get(url, timeout=5)
        response.raise_for_status()
        
        users = response.json()
        for user in users:
            name = user.get("name")
            email = user.get("email")
            print(f"이름: {name} | 이메일: {email}")
            
    except requests.exceptions.HTTPError as http_err:
        print(f"HTTP 오류 발생: {http_err}")
    except requests.exceptions.ConnectionError:
        print("네트워크 연결을 확인해주세요.")
    except requests.exceptions.Timeout:
        print("요청 시간이 초과되었습니다.")
    except Exception as err:
        print(f"알 수 없는 오류 발생: {err}")

if __name__ == "__main__":
    fetch_users()

3. 코드 주요 구성 요소 설명

  1. requests.get(url, timeout=5): 지정된 URL에 GET 요청을 보냅니다. 타임아웃을 5초로 설정하여 무한 대기 상태를 방지합니다.
  2. response.raise_for_status(): 상태 코드가 4xx나 5xx일 경우 HTTPError 예외를 발생시켜 오류를 감지할 수 있게 돕습니다.
  3. response.json(): 서버가 반환한 JSON 문자열을 Python의 딕셔너리나 리스트 객체로 변환합니다.

4. 자주 발생하는 오류와 해결 방법

관련 글: 응답 데이터 처리와 에러 예외 처리

ModuleNotFoundError: No module named ‘requests’ 오류가 뜹니다.

requests 패키지가 설치되지 않았거나 가상 환경이 활성화되지 않은 상태에서 실행할 때 발생합니다. 터미널에서 pip install requests를 다시 실행하세요.

requests.exceptions.Timeout 오류는 어떻게 해결하나요?

서버 응답이 지연되거나 네트워크가 끊겼을 때 발생합니다. 코드 내 timeout 값을 늘리거나 네트워크 연결 상태를 확인해야 합니다.

TIP

실제 상용 서비스와 통신할 때는 API 키나 인증 토큰을 코드에 직접 노출하지 말고 환경 변수(os.environ)나 별도의 설정 파일로 분리하여 관리하는 것이 안전합니다.

완성 코드 예제

UtilLog Web Example
코드를 수정한 뒤 실행을 누르면 Result에 반영됩니다.

안전한 API 연동을 위한 실천 과제

외부 API를 다룰 때는 정상적인 응답 처리만큼이나 예외 상황에 대비하는 코드가 중요하다. 타임아웃 설정과 상태 코드 검증을 기본으로 적용하면 예기치 않은 서버 장애나 네트워크 지연에도 프로그램이 안정적으로 동작한다.

실제 프로젝트에 적용할 때는 API 인증 정보를 소스 코드에 하드코딩하지 말고 환경 변수로 분리해야 한다. 작은 보안 수칙이지만 서비스의 안전성을 높이는 데 큰 역할을 한다.

참고자료

jsonplaceholder.typicode.com — 실전 코드 예제에서 사용자 목록 데이터를 가져오기 위해 호출하는 공개 테스트 API 엔드포인트입니다.

jsonplaceholder.typicode.com — 단일 사용자 데이터를 조회하거나 API 호출 테스트 시 참고할 수 있는 상세 리소스 경로입니다.

댓글 남기기

이메일 주소는 공개되지 않습니다.