파이썬의 requests 모듈은 HTTP 요청을 보내고 응답을 받는 데 사용되는 라이브러리입니다. requests 모듈은 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원하며, 간단하고 직관적인 API를 제공하여 HTTP 클라이언트를 쉽게 구현할 수 있도록 도와줍니다.
1. 설치
requests 모듈은 파이썬 기본 라이브러리가 아니기 때문에 설치가 필요합니다. 다음 명령어를 사용하여 설치할 수 있습니다.
pip install requests
2. GET 요청
GET 요청을 보내려면 requests.get() 함수를 사용합니다. 예를 들어, http://httpbin.org/get URL로 GET 요청을 보내는 코드는 다음과 같습니다.
get method로 데이터 보내기
import requests
# 1. 직접 입력해서 보내기
# url에 보내고자 하는 데이터를 입력해서 전송한다.
URL = "http://google.com?user=comp&num=42"
response = requests.get(URL)
print("status code :", response.status_code)
# 2. dict 이용하기
param = { "user" : "comp", "num" : 42 }
response = requests.get(URL, params=param)
print("status code :", response.status_code)
Response 객체
요청(request)을 보내면 응답(response)을 python 객체로 받는다. 그리고 이 Response 객체는 많은 정보와 기능을 가지고 있다. 자주쓰는 몇가지를 정리해보면
# 내가 보낸 request 객체에 접근 가능
response.request
# 응답 코드
response.status_code
# 200 (OK 코드)이 아닌 경우 에러 raise
response.raise_for_status()
# json response일 경우 딕셔너리 타입으로 바로 변환
response.json()
# content 속성을 통해 바이너리 타입으로 데이터를 받을 수 있다.
response.content
# text 속성을 통해 UTF-8로 인코딩된 문자열을 받을 수 있다.
response.text
# encoding 정보 확인
response.encoding
3. POST 요청
POST 요청을 보내려면 requests.post() 함수를 사용합니다. 예를 들어, http://httpbin.org/post URL로 JSON 데이터를 POST 요청으로 보내는 코드는 다음과 같습니다.
import requests
import json
data = {'key': 'value'}
headers = {'Content-type': 'application/json'}
response = requests.post('http://httpbin.org/post', data=json.dumps(data), headers=headers)
print(response.text)
POST 요청에서 데이터는 data 매개변수에 딕셔너리 형태로 전달됩니다. 이 경우, 데이터는 JSON 형식으로 인코딩되어 전송됩니다. headers 매개변수는 요청 헤더를 지정하는 데 사용됩니다.
4. 파일 업로드
파일을 업로드하려면 files 매개변수를 사용하여 파일을 전송할 수 있습니다. 예를 들어, http://httpbin.org/post URL로 이미지 파일을 업로드하는 코드는 다음과 같습니다.
import requests
url = 'http://httpbin.org/post'
files = {'file': open('image.png', 'rb')}
response = requests.post(url, files=files)
print(response.text)