본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] requests 라이브러리 완전 정복 : HTTP 요청을 간단하게

by Papa Martino V 2025. 7. 22.
728x90

requests 라이브러리 완전 정복 : HTTP 요청을 간단하게
[PYTHON] requests

 

Python의 requests 라이브러리는 복잡한 HTTP 통신을 극도로 단순화하여 API 호출, 웹 데이터 요청, 크롤링 등을 매우 쉽게 만들어 줍니다. 본 글에서는 실무 중심의 관점으로 requests의 다양한 기능과 실제 적용 방법을 상세히 소개합니다.

1. requests란?

  • Python에서 HTTP 요청을 쉽게 처리할 수 있도록 만든 외부 라이브러리
  • GET, POST, PUT, DELETE 등 다양한 메서드 지원
  • 쿠키, 헤더, 인증 등 복잡한 네트워크 요청을 간결하게 구성
  • JSON 자동 파싱 기능 내장

2. 설치 방법

pip install requests

3. 기본 사용법


import requests

response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.status_code)
print(response.json())

4. 주요 요청 메서드 비교

메서드 설명 사용 예시
GET 데이터 조회 requests.get(url)
POST 데이터 전송 requests.post(url, data=...)
PUT 전체 리소스 수정 requests.put(url, data=...)
DELETE 리소스 삭제 requests.delete(url)

5. JSON 데이터 요청 및 파싱


res = requests.get("https://jsonplaceholder.typicode.com/users")
users = res.json()

for user in users:
    print(user["name"], "-", user["email"])

6. 헤더와 파라미터 설정


headers = {"User-Agent": "Mozilla/5.0"}
params = {"search": "python"}

res = requests.get("https://example.com/search", headers=headers, params=params)
print(res.url)

7. POST 요청으로 데이터 전송


payload = {"username": "testuser", "password": "1234"}

res = requests.post("https://httpbin.org/post", data=payload)
print(res.text)

8. 파일 업로드 및 다운로드


# 파일 업로드
files = {"file": open("example.txt", "rb")}
res = requests.post("https://httpbin.org/post", files=files)

# 파일 다운로드
img = requests.get("https://httpbin.org/image/png")
with open("image.png", "wb") as f:
    f.write(img.content)

9. 예외 처리 (중요)


try:
    res = requests.get("https://example.com", timeout=5)
    res.raise_for_status()
except requests.exceptions.HTTPError as e:
    print("HTTP 오류:", e)
except requests.exceptions.RequestException as e:
    print("요청 실패:", e)

10. 세션(Session) 객체 활용

로그인 유지, 쿠키 저장 등을 위한 세션 관리 예제


session = requests.Session()
session.post("https://example.com/login", data={"id": "me", "pw": "1234"})
res = session.get("https://example.com/mypage")
print(res.text)

11. 실전 예제: REST API 통신


API_KEY = "내_키"
headers = {"Authorization": f"Bearer {API_KEY}"}

res = requests.get("https://api.openai.com/v1/models", headers=headers)
print(res.json())

12. requests vs urllib vs httpx 비교

항목 requests urllib httpx
간결성 ★★★★★ ★★☆☆☆ ★★★★☆
비동기 지원 불가 불가 가능 (async)
사용 편의성 최고 복잡함 우수
실전 활용도 높음 낮음 중간

13. requests 사용 팁

  • 모든 요청에는 timeout 설정 습관화
  • API Rate Limit을 고려한 sleep 또는 backoff 처리
  • 응답의 status_code 확인 필수
  • 빈번한 요청은 Session 객체로 통일

14. 결론: 가장 직관적인 HTTP 통신 도구

Python requests는 개발자, 데이터 사이언티스트, 자동화 엔지니어 모두에게 없어서는 안 될 도구입니다. 단 몇 줄의 코드로 복잡한 API 통신, 인증 처리, JSON 파싱 등을 수행할 수 있으며, 실전 자동화 시스템에서도 널리 활용됩니다. RESTful API의 기본기를 탄탄히 다지고 싶은 분이라면 반드시 익혀야 할 필수 라이브러리입니다.

참고 출처

728x90