파워풀한 Python HTTP 라이브러리 requests
requests는 HTTP Client 역할을 할 수 있는 Python 라이브러리 입니다. urllib3 를 기반으로 만들어 진 것 같으며 사용하기 굉장히 편리합니다. REST API를 테스트 하거나 웹사이트 크롤링 할 때 정말 좋은 것 같습니다.
오늘은 이 라이브러리의 사용 방법을 간단 정리 해보겠습니다. 참고로 설치는 pip install requests 로 할 수 있습니다.
1. GET
간단하게 Query String 이 있는 날씨 API 로 Test를 해보겠습니다. 참고로 Query String은 URL 에서 ‘? ‘ 표시 이후에 나오는 String입니다.
https://openweathermap.org/current 에 들어가서 example을 누르면 새 탭이 뜨면서 날씨 정보가 나올겁니다. 그럼 주소창에 URL을 복사해 주세요

해당 URL은 아래와 같을 건데요
https://samples.openweathermap.org/data/2.5/forecast?q=M%C3%BCnchen,DE&appid=b6907d289e10d714a6e88b30761fae22
그럼 아래와 같이 코드를 입력하고 실행시켜 봅시다. req.get 함수에 params 아규먼트를 세팅 하면 라이브러리가 알아서 Query String을 추가해 줍니다.
import requests as req url = 'https://samples.openweathermap.org/data/2.5/forecast' param = { 'q':'Seoul,DE', 'appid':'b6907d289e10d714a6e88b30761fae22' } rsp = req.get(url, params= param) print(rsp.status_code) print(rsp.text) print(rsp.json()) print(rsp.request.method + ' ' + rsp.request.url + ' ' + str(rsp.request.headers) + ' ' + str(rsp.request.body))
코드의 결과는 아래와 같이 나오는데요
rsp 개체에서 HTTP 결과코드, 내용, request의 method, url, headers 등의 정보를 뽑아 볼 수 있습니다.
내용의 경우 json 형태로 받아오면 바로 Python 자료형인 Dictionary 형태로 사용가능합니다.

2. POST
post 에서 form 데이터 혹은 Body를 붙히고 싶을때는 data 라는 아규먼트를 사용합니다. 또한 쿠키를 추가 하고 싶다면 cookies 라는 아규먼트에 Dict 타입을 넘기면 됩니다. 아래와 같은 식이지요
cookDict = {'POESESSID': poeSessionID} param = {'accountName': accntName, 'character': character} url = baseURL + 'character-window/get-items' response = requests.post(url, data=param, cookies=cookieDict) resultDict = response.json()
데이터를 Json으로 보내고 싶을 경우도 있을 겁니다. 아래처럼 header를 정의 한 뒤 dump 후 data 아규먼트에 전달 하시면 됩니다.
headers = {'Content-Type': 'application/json'} param = { 'a': 1, 'b': 2 } param = json.dumps(param) response = req.post(url, data=param, headers=headers)