티스토리 뷰

728x90
반응형

 

 

 

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

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

 

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

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

 

공공데이터 포털

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

www.data.go.kr

 

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

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

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

 

 

 

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

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

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

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

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

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

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

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

 

 

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

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

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

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

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

 

 

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

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

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

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

 

 

 

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

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

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

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

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

 

 

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

기술문서_정류장_주변도로_미세먼지빅데이터_기반_대응시스템_공공데이터_조회(최종).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인거에요.

 

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

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

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

 

 

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

REST(URI) 부분을 보면,

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

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

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

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

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

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

 

 

 

 

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

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

로그인을 했다면

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

 

 

 

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

스크롤을 쭉 내려서,

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

 

신청이 완료되면

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

 

 

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

 

 

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

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

설명을 읽어보니

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

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

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

 

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

 

 

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

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

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

 

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

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

 

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

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

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

 

파이썬 샘플코드를 보면

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

params는 요청변수에요.

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

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

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

 

 

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

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

 

 

오잉?

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

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

 

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

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

 

 

짜란

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

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

 

 

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

json형태로 변경해줍니다.

import json

json.loads(response.text)

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

 

 

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

 

 

 

 

정말 쉽죠??

 

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

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

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

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

 

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

 

 

 

 

 

 

 

728x90
반응형
댓글