requests는 Python에서 HTTP 요청을 쉽게 보낼 수 있게 해주는 매우 인기 있는 라이브러리입니다. 이 라이브러리를 사용하면 복잡한 HTTP 요청을 간단하게 구현할 수 있으며, 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원합니다.
requests 설치
requests는 Python 표준 라이브러리가 아니기 때문에, 먼저 설치해야 합니다. 다음 명령어를 사용해 설치할 수 있습니다.
pip install requests
주요 기능 및 사용법
1. GET 요청
GET 요청은 서버로부터 데이터를 가져오는 데 사용됩니다. requests.get()을 사용하여 간단하게 GET 요청을 보낼 수 있습니다.
import requests
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code) # 상태 코드 출력 (ex: 200)
print(response.text) # 응답 본문 출력
2. POST 요청
POST 요청은 서버에 데이터를 제출할 때 사용됩니다. requests.post()를 사용하면 폼 데이터나 JSON 데이터를 서버로 보낼 수 있습니다.
url = 'https://jsonplaceholder.typicode.com/posts'
data = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
response = requests.post(url, json=data)
print(response.status_code) # 상태 코드 출력 (ex: 201)
print(response.json()) # 응답 JSON 출력
3. 요청 헤더 설정
요청을 보낼 때 추가적인 헤더를 설정할 수 있습니다. 헤더는 headers 인자를 사용해 딕셔너리 형태로 전달합니다.
headers = {
'User-Agent': 'my-app/0.0.1',
'Authorization': 'Bearer your_token_here'
}
response = requests.get('https://api.example.com/data', headers=headers)
print(response.status_code)
4. 쿼리 파라미터
GET 요청에 쿼리 파라미터를 추가하려면 params 인자를 사용하면 됩니다.
params = {
'search': 'python',
'page': 2
}
response = requests.get('https://example.com/search', params=params)
print(response.url) # 요청된 URL 확인
5. 파일 업로드
파일을 서버로 업로드할 때는 files 인자를 사용합니다.
url = 'https://example.com/upload'
files = {'file': open('report.txt', 'rb')}
response = requests.post(url, files=files)
print(response.status_code)
6. 타임아웃 설정
요청에 타임아웃을 설정할 수 있습니다. 타임아웃은 서버가 응답하지 않으면 일정 시간 후에 요청을 중단하게 합니다.
response = requests.get('https://example.com', timeout=5)
7. 예외 처리
requests 라이브러리에서 발생할 수 있는 예외를 처리하는 것이 중요합니다. 대표적인 예외로 requests.exceptions.Timeout, requests.exceptions.RequestException 등이 있습니다.
try:
response = requests.get('https://example.com', timeout=5)
response.raise_for_status() # 상태 코드가 4xx, 5xx이면 예외 발생
except requests.exceptions.Timeout:
print("요청 시간이 초과되었습니다.")
except requests.exceptions.RequestException as e:
print(f"요청 중 오류가 발생했습니다: {e}")
주요 HTTP 메서드
- requests.get(): 리소스 요청
- requests.post(): 리소스 생성 및 데이터 전송
- requests.put(): 기존 리소스 업데이트
- requests.delete(): 리소스 삭제
- requests.head(): 헤더 정보만 요청
- requests.options(): 서버에서 지원하는 메서드 요청
Session 객체
requests.Session() 객체를 사용하면 여러 요청에서 설정을 공유할 수 있습니다. 이를 통해 쿠키나 인증 정보를 공유하는 것이 가능합니다.
session = requests.Session()
session.headers.update({'Authorization': 'Bearer your_token_here'})
response = session.get('https://example.com/data')
결론
requests는 Python에서 HTTP 요청을 매우 간단하게 할 수 있도록 도와주는 라이브러리입니다. 다양한 HTTP 메서드를 지원하며, 파일 업로드, 타임아웃 설정, 예외 처리 등 다양한 기능을 제공합니다. 따라서 웹 스크래핑, API 요청, 서버와의 통신 등 여러 상황에서 유용하게 사용할 수 있습니다.
'python' 카테고리의 다른 글
파이썬에서 문자열이 공백인지 쉽게 확인하는 3가지 방법 (0) | 2024.08.27 |
---|---|
python dictionary 합치기 (0) | 2024.08.27 |
Python Dictionary의 get 메서드: 키가 없을 때 어떻게 처리할까? (3) | 2024.08.14 |
파이썬 nifti to jpg, nifti파일 변환 코드 (0) | 2024.08.13 |
python isinstance(), 객체가 특정 클래스나 데이터 타입에 속하는지를 확인 (4) | 2024.08.09 |