API 활용

Published: Jan 13, 2020 by Dev-hwon

API에 대한 정보는 Data Engineering 카테고리의 API란 포스트 참고


requests 모듈

  • http request/response를 위한 모듈
  • HTTP method를 메소드 명으로 사용하여 request 요청

get 요청하기

  1. http get 요청하기
  2. query parameter 이용하여 데이터 전달하기
url = 'https://hwk0702.github.io/'
resp = requests.get(url)

post 요청하기

  1. http post 요청하기
  2. post data 이용하여 데이터 전달하기
url = 'https://hwk0702.github.io/'
datas = {
  'id': 'abcd'
  'pwd': '1234'
}

resp = requests.post(url, data=datas)

HTTP header 데이터 이용하기

  1. header 데이터 구성하기
  2. header 데이터 전달하기
url = 'https://hwk0702.github.io/'
headers = {
  'user-agent': Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
}
resp = requests.get(url, header=headers)

HTTP response 처리하기

  1. response 객체의 이해
  2. status_code 확인하기
  3. text 속성 확인하기
url = 'https://hwk0702.github.io/'
resp = requests.get(url)

if resp.status_code == 200:
  resp.text
else:
  print('error')

API 사용하기

  1. API 사용 요청 / 키 발급
  2. API 문서(specification) 확인
  3. API 테스트 및 개발

Endpoint 확인하기

  • API가 서비스 되는 서버의 IP 혹은 domain wnth

key 값 확인하기

  • 서비스 호출 트래킹할 목적이나 악의적인 사용을 금지할 목적으로 주로 사용

parameter 확인하기

  • API 호출에 필요한 parameter 값 확인 및 구성

요청 및 Response 확인

  • request 모듈을 활용하여 API 호출
  • response 확인하여 원하는 정보 추출
  • json 데이터의 경우, python dictionary로 변경하여 사용가능

API 활용 예시

  • 공공 데이터 포털에서 관광자원통계서비스 활용
  • urllib.request 모듈 사용
import urllib.request
import json

ym = '201201'
sido = urllib.parse.quote('서울특별시')
gungu = urllib.parse.quote('종로구')
res_nm = urllib.parse.quote('경복궁')
page_no = '1'
num_of_rows = '100'
service_key = 'YOUR SERVICE_KEY'

url = 'YOUR URL'
url = url + "&YM=" + ym
url = url + "&SIDO=" + sido
url = url + "&GUNGU=" + gungu
url = url + "&RES_NM=" + res_nm
url = url + "&pageNo=" + page_no
url = url + "&numOfRows=" + num_of_rows
url = url + "&serviceKey=" + service_key

req = urllib.request.Request(url)
response = urllib.request.urlopen(req)
j = json.loads(response.read().decode('utf-8'))

print(ym, j['response']['body']['items']['item']['csForCnt'], j['response']['body']['items']['item']['csNatCnt'])
API Application Programming Interface Requests Get Post HTTP 데이터 엔지니어링 Data Engineering