오늘도 해커톤 프로젝트를 계속 진행하고 있다. 리팩토링도 하고 테스트 코드도 좀 작성해놔야 하는데 기능 추가만으로도 정신이 없다.. 이번 프로젝트에서는 백엔드 앱이 외부 API와 통신을 할 필요가 있어서, 오늘은 Requests 라이브러리를 간단하게 사용해 보고 정리했다.
파이썬에서 HTTP 요청을 보내고 응답을 받는 라이브러리
Requests: HTTP for Humans™ — Requests 2.32.5 documentation
$ pip install requests
import requests
kakao_rest_api_key = 'REST API 키'
auth_header = {'Authorization': f'KakaoAK {kakao_rest_api_key}'}
keyword = '서울역'
payload = {'query': keyword}
r = requests.get('https://dapi.kakao.com/v2/local/search/keyword', headers=auth_header, params=payload)
Authorization: KakaoAK ${카카오 REST API 키}가 필수로 있어야 함Authorization이 헤더 key에 해당하고, KakaoAK부터는 value에 해당headers: 헤더 딕셔너리 / params: Query Parameterresponse_text = r.text
response_json = r.json()
text는 @property이며, json은 메소드임에 유의text 값은 str 형태이고, json 메소드의 반환값은 파이썬 객체임에 유의Response.text()는 문자열 타입으로 resolve됨Response.json()이 JSON이 아닌 자바스크립트 객체로 resolve됨print(f"텍스트: {response_text}"[:374], type(response_text))
print(f"파이썬 객체: {r.json()}"[:391], type(response_json))
텍스트: {"documents":[{"address_name":"서울 중구 봉래동2가 122-11","category_group_code":"","category_group_name":"","category_name":"교통,수송 \u003e 기차,철도 \u003e 기차역 \u003e KTX정차역","distance":"","id":"9113903","phone":"1544-7788","place_name":"서울역","place_url":"http://place.map.kakao.com/9113903","road_address_name":"서울 중구 한강대로 405","x":"126.97070335253385","y":"37.55406888733184"},{" <class 'str'>
파이썬 객체: {'documents': [{'address_name': '서울 중구 봉래동2가 122-11', 'category_group_code': '', 'category_group_name': '', 'category_name': '교통,수송 > 기차,철도 > 기차역 > KTX정차역', 'distance': '', 'id': '9113903', 'phone': '1544-7788', 'place_name': '서울역', 'place_url': 'http://place.map.kakao.com/9113903', 'road_address_name': '서울 중구 한강대로 405', 'x': '126.97070335253385', 'y': '37.55406888733184'}, {'addr <class 'dict'>
원문은 너무 길어서 슬라이싱했음