Open API 예제 - Open API yeje

Open API 예제 - Open API yeje

공공데이터포털에는 수많은 데이터들이 있죠!

이 데이터들을 쉽게 활용할 수 있는 REST API 사용법을 알려드리려 합니다.

일단 먼저 어떤 데이터를 활용할지 공공데이터포털에 들어가봅니다!

https://www.data.go.kr/

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

Open API 예제 - Open API yeje

공공데이터포털에 들어가면 보이는 검색창에 원하는 데이터를 검색해두 되구요,

저는 아직 어떤 데이터를 API호출하여 사용할지 정하지 않았으니

데이터찾기 > 데이터목록에 들어가보겠습니다

Open API 예제 - Open API yeje

총 63,603건의 데이터가 검색이 되었네요!

조건검색에 있는 분류체계는 데이터의 카테고리이구요,

서비스유형으로는 LOD, REST, SOAP 등등이 있는데,

본문에서는 API를 처음 사용할 때 가장 접근이 쉬운 유형인, REST API 데이터를 사용할 거에요!

조건검색에서 REST를 체크해줍니다.

태그는 API와 관련된 키워드들을 의미하구요,

확장자는 어떤 형태로 데이터를 받을 것인지를 선택해주면 됩니다.

저는 JSON을 체크해주었습니다.

Open API 예제 - Open API yeje

서비스유형 REST와 확장자 JSON을 체크하고

오픈 API 탭을 누르니 450건이 검색되었네요.

검색결과에서 가장 첫번째 API로 나온,

"경기도_정류장 주변도로 미세먼지빅데이터 기반 대응시스템 공공데이터 조회"

데이터를 호출해보록 할게요!

Open API 예제 - Open API yeje

클릭해서 상세페이지로 들어왔어요.

276명이 활용 신청해서 사용하고 있는 API네요.

참고문서란에는 기술문서_정류장_주변도로_미세먼지빅데이터_기반_대응시스템_공공데이터_조회(최종).docx가 있네요.

이 문서는 API를 어떻게 사용할 수 있는지 자세하게 설명히 적혀있는 API가이드예요.

Open API 예제 - Open API yeje

그리고 스크롤을 좀 더 내려보면

요청변수와 출력결과, 그리고 샘플코드가 있어요.

요청변수는 내가 원하는 데이터를 얻기 위해 검색할 때 조건을 설정하는 변수이구요,

출력결과는 내가 조건을 설정해서 검색했을 때 검색결과로 나오는 데이터 결과예요.

샘플코드에는 이 데이터들을 여러 프로그래밍 언어로 호출할 수 있도록 예제 코드가 적혀있죠.

Open API 예제 - Open API yeje

이름이 엄청 길었던.. 참고문서,

기술문서_정류장_주변도로_미세먼지빅데이터_기반_대응시스템_공공데이터_조회(최종).docx

파일을 다운로드 받아 열어볼게요.

이 API의 URL은 "http://apis.data.go.kr/6410000/GOA/GOA001" 라고 적혀있어요.

http://apis.data.go.kr는 공공데이터포털의 도메인이죠.

6410000은 이 API를 오픈한 기관의 기관코드이고,  GOA는 API서비스명이예요.

GOA001은 API 오퍼레이션명이구요.

API마다 여러개의 데이터가 있는데,

이 API의 첫번째 데이터인 오퍼레이션 번호1번의 이름이 GOA001인거에요.

Open API 예제 - Open API yeje

그 아래에는 아까 API 상세페이지에서 봤던 요청변수와, 출력결과 표가 있네요.

API URL 뒤에 여러 요청변수를 붙여서 원하는 데이터를 호출하면

응답메시지 명세에 있는 항목들로 출력결과를 받게되는 거죠.

Open API 예제 - Open API yeje

좀 더 스크롤을 내려보면 요청/응답 메시지 예제가 있습니다.

REST(URI) 부분을 보면,

API 콜백 URL (http://apis.data.go.kr/6410000/GOA/GOA001) 뒤에 여러 요청변수가 붙어있는게 보이죠??

요청변수를 붙일때는 ?로 시작하고,

&로 요청변수들을 이어붙이면 됩니다.

아래예제에서는 ServiceKey, type, numOfRows, pageNo를 요청변수로 넣었네요.

type은 json타입으로, 10개의 데이터가 들어있는 1번째 페이지를 검색조건으로 넣었어요.

그 조건에 맞는 결과데이터는 응답메시지와 같구요!

Open API 예제 - Open API yeje

이제 어떻게 API를 호출하는지 알았으니 인증키를 발급받아 API를 사용해봅시다!!

인증키를 발급받기 위해서는 로그인을 해야하구요, 

로그인을 했다면

우측에 있는 활용신청 버튼을 눌러주세요!

Open API 예제 - Open API yeje

openAPI 개발계정 신청 페이지가 나오면,

스크롤을 쭉 내려서,

필수 입력항목들을 모두 입력해주시고, 활용신청 버튼을 누릅니다!!

Open API 예제 - Open API yeje

신청이 완료되면

승인된 API 목록이 보이고, 클릭해서 상세페이지를 들어가면 API별 인증키를 알 수 있어요.

Open API 예제 - Open API yeje

인증키를 정상적으로 발급받았습니다!

Open API 예제 - Open API yeje

이제 요청/응답 메시지 예제에 있던 URL에 발급받은 인증키를 넣어서 고대로 API를 호출해볼게요.

 아래 URL에서 <서비스키> 부분만 인증키를 넣어 API를 호출합니다!!

설명을 읽어보니

일반인증키(Encoding)와 일반인증키(Decoding)가 있는데,

두개를 다 사용해보면서 구동되는 키를 사용하라고 적혀있네요.

일단 저는 일반인증키(Encoding)를 넣었더니 정상적으로 호출이 되었습니다!

http://apis.data.go.kr/6410000/GOA/GOA001?ServiceKey=서비스키&type=json&numOfRows=10&pageNo=1 

Open API 예제 - Open API yeje

첫번째 페이지가 열렸으니 두번째 페이지도 열어볼 수 있겠네요.

pageNo=2로 변경하면 두번째 페이지를 호출할 수 있죠!

이런 식으로 요청변수 값을 변경하면서 원하는 조건의 데이터를 호출하면 됩니다.

그런데 API를 호출해서 결과 데이터를 정상적으로 받았는데 저걸 어떻게 가져와서 쓸 수 있을까요??

호출한 데이터를 가져오기 위해서는 바로바로 샘플코드를 보시면 됩니다!

아까 API 상세페이지에서 스크롤을 제일밑으로 내렸을 때 있었던 샘플코드에요.

저는 파이썬을 주로 쓰니 파이썬 코드를 사용하겠습니다~

코드를 읽을 줄 몰라도 괜찮아요. 매우 쉽거든요.

파이썬 샘플코드를 보면

url 에 우리가 호출하는 url이 적혀있네요.

params는 요청변수에요.

?serviceKey=서비스키&type=json... 이런식으로 호출했던 것을

'serviceKey' : 서비스키, 'type': 'json' ... 이런식으로 형태만 바꾸어주면 됩니다.

파이썬으로 데이터를 호출해봅시다.

Open API 예제 - Open API yeje

위에 샘플코드에 있던 그대로 입력해주고,

서비스키만 내가 발급받은 인증키값을 넣어주었어요.

Open API 예제 - Open API yeje

오잉?

아까와 똑같이 일반인증키(Encoding)로 API를 호출했는데 

아래와 같이 SERVICE_KEY_IS_NOT_REGISTERED_ERROR라는 에러가 떴네요.

일반인증키(Encoding)와 일반인증키(Decoding) 두개를 다 사용해보면서 구동되는 키를 사용하라고 적혀있었으니

일반인증키(Decoding)를 넣어 다시 호출해봅시다!!!!

Open API 예제 - Open API yeje

짜란

serviceKey에 일반인증키(Decoding)를 넣어 호출했더니

정상적으로 데이터를 받아오게 되었습니다!!

Open API 예제 - Open API yeje

결과데이터의 형태를 출력해보면 str(문자열)로 뜨기 때문에

json형태로 변경해줍니다.

import json

json.loads(response.text)

를 해주면 json형태로 변경된답니다.

Open API 예제 - Open API yeje

이렇게 진짜 최종 json형태의 결과데이터를 가져올 수 있었습니다!

Open API 예제 - Open API yeje

정말 쉽죠??

공공데이터포털 뿐만 아니라 서울 열린데이터광장이라던지,

다른 타사이트의 API를 호출하여 사용하고 싶을 때,

똑같이 활용신청하고, 인증키를 발급받아서,

똑같은 방법으로 호출하여 사용하면 된답니다!

공공데이터포털 API 사용법 끝입니다~!