[Python] Requests
Requests
requests는 파이썬으로 HTTP 통신이 필요한 프로그램을 작성할 때 가장 많이 사용되는 라이브러리입니다. 특히 원격에 있는 API를 호출할 때 유용하게 사용할 수 있는데요. 이번 포스팅에서는 requests 라이브러리를 사용하는 방법에 대해서 알아보겠습니다.
Install
pip install requests
API
- GET : requests.get()
- POST : requests.post()
- PUT : requests.put()
- DELETE : requests.delete()
Response(응답)
응답상태 (status_code)
response = requests.get("조회 URL")
response.status_code # 200, 201, 404 등 다양한 응답상태 확인
응답전문(content, text, json)
response = requests.get("조회 URL")
response.content # 바이너리 원본
response.text # UTF-8로 인코딩된 문자열
response.json() # JSON 형식
응답 헤더(headers)
response = requests.get("조회 URL")
response.headers # 딕셔너리 형태로 응답헤더 정보 출력
response.request
내가 보낸 request 객체에 접근 가능
response.raise_for_status()
200 (OK 코드)이 아닌 경우 에러 raise
response.encoding
encoding 정보 확인
Request (요청)
request query
# 조회 URL?userId=1
response = requests.get("요청 URL", params={"userId": "1"}) // GET 방식(query string 형식으로 요청)
data
data 옵션을 사용하면 Content-Type 이 application/x-www-form-urlencoded 로 자동 설정
requests.post("요청 URL", data={'name': 'pondol'})
json
json 옵션을 사용하면, REST API로 JSON 포맷의 데이터를 전송할 수 있으며, 이 때 Content-Type 요청 헤더는 application/json로 자동 설정
requests.post("요청 URL", json={'name': 'pondol'})
headers
headers 옵션을 사용하면 요청 헤더도 직접 설정할 수 있는데요. 인증 토큰을 보낼 때 유용하게 사용할 수 있습니다.
requests.post("요청 URL", headers={'Authorization': 'Bearer 12345'})
Request 예제
GET
get method로 데이터 보내기
import requests
# 1. 직접 입력해서 보내기
# url에 보내고자 하는 데이터를 입력해서 전송한다.
response = requests.get(요청 URL)
# 2. dict 이용하기
param = { "user" : "comp", "num" : 42 }
response = requests.get(요청 URL, params=param)
POST
import requests, json
# data with json
data = {"outer": {"inner": "value"}}
response = requests.post(요청 URL, data=data)
response = requests.post(요청 URL, data=json.dumps(data))
# json
response = requests.post(요청 URL, json={"name": "test"})
# files
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
TIMEOUT
timeout exception error를 raise 할 수 있다.
requests.get('https://github.com/', timeout=0.001)