아카이브/ICT

▶공공데이터포털API활용하기 - 국내항공운항정보서비스API

비주얼라이즈 2015. 1. 27. 23:56



▶공공데이터포털API활용하기 - 국내항공운항정보서비스API


이번글에서는 공공데이터포털에서 제공하는 API를 활용하여 국내 항공운항 정보서비스 목록을 가져오는 과정에 대해서 살펴보려고합니다. 




공공데이터포털API활용하기 - 국내항공운항정보서비스


개인적으로 '서울열린데이터광장'의 API서비스는 굉장히 편리하게 이용했으나, 공공데이터포털의 API는 기술문서를 보아도 이해하기 힘들었습니다. 여러번 막히다가 그냥 내버려두다가, 기를쓰고 다시 기술문서를 뒤져가면서 그 활용법에 대해서 알아보고자했고, 이 글에서 그 과정을 정리해보려고합니다.




서울열린데이터광장API서비스는 굉장히 간단하기도하고, 더하여 예제URL이 주어져있었기때문에 구조를 한번에 파악할 수있었습니다. 반면에 공공데이터포털API의 경우, 개발자가 아닌 사람(저같은 사람)이 들여다보면 온갖외계어에 머리가 지끈지끈 아파오는 구조입니다.






《국가정보자원 개방·공유 체계 구축 Open API활용가이드》라는 이름의 API기술문서는 무려 46페이지에 걸쳐 6,318개의 단어로 구성되어있습니다. 친절하게 풀어써준것은 절대아니고, 개발자가 개발자를 위해 써놓은느낌이라고 생각하시면 될 것같습니다. 정 궁금하시다면 문서를 직접 열어보시면 되겠습니다.









국내항공운항정보서비스 API


자 어렵다는 것을 어필하는 것은 이쯤하면 됐고, 본격적으로 API KEY를 활용하여 데이터를 가져오는 방법에 대해서 살펴보도록 하겠습니다. 앞서 살짝(?)보여드린 46페이지 짜리 기술문서에서 19페이지에 이 《국내 항공운항정보서비스API》에 대한 설명이 나와있습니다. 문서를 직접열어보시는 것도 좋지만, 이것조차 귀찮아하실분들이 분명 있을것이라고 생각하기에 여기에 일일이 수작업으로 그 내용을 옮겨보기로 하겠습니다.












국내 항공운항 정보서비스API - 서비스 내용



서비스 명(국문)

국내 항공운항 정보 서비스 

서비스 명(영문)

DmstcFlightInfoService 

서비스 설명

국내 항공운항정보 조회 

서비스 인증/권한 

서비스key 

인터페이스 표준

REST(GET, POST, PUT, DELETE) 

교환 데이터 표준 

XML, JSON 


문서를 직접열어보시면 다른 내용들도 있지만, 표기되지않은(형식유지를 위해 불필요하게 삽입된 부분들)부분을 제외하고 나머지 정보가 담긴 내용만 추렸습니다. 이 API서비스는 REST(GET, POST, PUT, DELETE)형태로 가져오게 되며, 교환데이터 표준이라고 써져있는부분에 보이듯 XML또는 JSON형태로 가져올 수 있습니다. 그리고 이 데이터를 이용하기위해서는 서비스KEY(인증키)를 함께 넣어야합니다.









국내 항공운항 정보서비스API - 이 API로 가져올 수 있는 정보들



getFlightOperaInfoList 

항공운행정보 목록 조회 

getArprtList

공항 목록 조회

getAirmanList

항공사 목록 조회 



이 APIKEY를 활용하여 가져올 수 있는 정보는 위에보이시는 것처럼 세 가지가 있습니다. 첫 번째로 "항공운행정보 목록조회"는 우리가 원하는다양한 정보를 조회하는 부분입니다. (자세한내용은 아래에서 설명) 두 번째로 "공항목록조회"는 말그대로 국내에 위치한 공항의 이름(국문)과 id값(영문)을 보여줍니다. 마지막으로 "항공사 목록조회"는 국내 항공사의 이름(국문)과 각 항공사별 id값(영문)을 보여줍니다.







국내 항공운항정보서비스API - 항공운행정보 목록조회 서비스


위에서 잠깐 언급했다시피, 사실 재미있는 정보는 여기에 모두 담겨있습니다. 공공데이터포털 기술문서에는 이부분을 '항공운항정보 목록조회 오퍼레이션 명세'라는이름으로 어느정도 형식을 갖추어 설명하고 있습니다.








항공운항정보 목록 조회 오퍼레이션 명세



오퍼레이션 번호

1 

오퍼레이션 명(국문)

항공운행정보 목록 조회 

오퍼레이션 명(영문)

getFilghtOpratInfoList

오퍼레이션 설명

출/도착지를 기반으로 국내선의 운행정보 목록을 조회

Call Back URL

N/A

초당 최대 트랜젝션

30tps

평균 응답 시간

500ms


*트랜젝션 : 은행 온라인 시스템이나 항공 좌석 예약 시스템과 같이 일상적인 거래를 발생 시점에서 수시로 중앙의 컴퓨터에 요구하고 즉시 응답을 받아 처리하는 방식으로, 한데 모아서 추후에 처리하는 일괄처리방식과 대조된다.[각주:1]


*콜백: 호출될 함수를 알려 주어 다른 프로그램 또는 다른 모듈에서 함수를 호출하게 하는 방법[각주:2]을 말한다.







항공운항정보 목록조회 요청메시지


 항목명(영문)

항목명(국문)

항목크기 

 항목구분

 샘플데이터

numOfRows

한 페이지 결과 수 

4 

1 

한 페이지 결과 수 

pageNo

페이지 번호

4

1 

페이지 번호 

depAirportId

출발 공항 ID 

30 

1 

NAARKJJ 

arrAirportId

도착 공항 ID 

30 

1

NAARKPC 

depPlandTime

출발일

8 

1 

20131007 

airlineId

항공사 ID 

13 

0 

ARR 

여기서 *항목구분이란 0과 1로 나뉘는데, 1은 필수항목으로서 반드시 포함시켜야하는 key값이라고 보면됩니다. (만약 요청시 필수항목에 해당하는 값을 입력(전달)하지 않을경우 에러가 발생한다.) 이 경우 항공사 ID값을 나타내는 "airlineId"를 제외한 모든 항목이 필수입력되어야 항목입니다.





출발일에 해당하는 depPlandTime값을 입력하지 않고 api요청을 할 경우 위 사진과 같은 페이지가 보이게 됩니다. 필수로 넣어주어야하는 항목들이 모두 요청KEY에 모두 들어가있는지 한번 더 확인해볼필요가 있습니다.





항공운항정보 목록조회 응답 메시지


앞서 요청메시지를 살펴보았습니다. 이제 살펴볼 '응답메시지'란, 요청메시지를 잘 작성에서 전달했을 경우, 우리가 받게되는 결과값을말합니다. 이 API서비스의 경우, 우리가 전달한 입력 값외에도 해당되는 정보의 범위내에서 다양한 데이터들을 함께 돌려줍니다.



항목명(영문)

항목명(국문) 

항목크기 

항목구분 

샘플데이터 

vihicleld

항공편명

9

1

OZ8141 

airlineNm

항공사명 

100 

1 

아시아나항공 

depPlandTime

출발시간 

14 

1 

20121201082000 

arrPlandTime

도착시간 

14 

1 

20121201090500 

economyCharge

일반석 운임 

8 

1 

57900 

prestigeCharge

비즈니스석 운임 

8 

1 

-1 

economySeatCnt

일반석 잔여석

8 

1 

3 

prestigeCharge

비즈니스석 잔여석 

8 

1 

1 

depAirportNm

출발공항 

30 

1 

광주 

arrAirportNm

도착공항

30 

1 

제주



위의 목록이 바로 '응답메시지'의 내용입니다. 다양한 응답메시지들이 있지만, 그 중에서도 "일반석운임"과 "비즈니스석 운임", 그리고 "일반석 잔여석"과 "비즈니스석 잔여석"등이 눈에띕니다. 그리고 그 밖의 메시지들을 활용하면 항공사별로, 일반석/비즈니스석 별 가격 및 잔여석을 비교해볼 수 있을 것 같다는 생각이 듭니다.








공공데이터포털 APIKEY활용법 - 국내항공운항정보서비스API의 구조


이번 api에서 endPoint는 http://opneapi.tago.go.kr/openapi/service 이지만, 다른 기관의 api를 활용할 경우에는 이 endPoint가 다르게 적용된다는 점 기억하셔야 합니다. 또한 선택항목인 &airlineId는 생략해도 데이터를 받아오는데에 문제는 없습니다. 






올바른api값을 전달했을 때 보게되는 결과창의 모습



파라미터를 다양하게 함으로써, 예를 들면 출발공항과 도착공항을 변경한다거나 airlineId를 설정하여 특정항공사의 정보만을 받아오고자할 경우에 그에 해당하는 id값을 넣어주어야합니다. 여기서 id값을 어디서 알아보지? 하는 궁금증이 생기기 마련인데요, 앞서 한번 살펴본대로 이 정보 역시 api로 받아올 수 있습니다.




국내 항공운항정보서비스API - 공항ID, 항공사ID값 가져오기


getFlightOperaInfoList 

항공운행정보 목록 조회 

getArprtList

공항 목록 조회

getAirmanList

항공사 목록 조회 



방법은 간단합니다. 이전에 살펴본 내용중 '공항목록조회'와 '항공사 목록조회'에 해당하는 부분인 'getArprtList'와 'getAirmanList'를 파라미터값으로 넣어서 실행해주면 됩니다. 이 경우, 다른 추가적인 필수입력값이 없기때문에 다른 파라미터 없이 이것만 넣어주면 됩니다.





마찬가지로 특별한 실수가 없다면 어렵지않게 다음과 같은 결과창을 확인할 수 있으실 것입니다.




위사진은 공항목록리스트를 API KEY값으로 호출한 모습입니다. 각 공항의 이름(국문)과 ID값(영문)이 함께 표시됩니다.



앞서 국내 공항의 정보를 받아온 것 과 마찬가지로, 위 사진에서는 국내 항공사의 정보목록을 받아온 결과입니다. 이전 사례와 비슷하게 항공사 명은 국문으로, 각 항공사별 ID값은 영문으로 제공되고있습니다. 주의해야할 점은 여기서 확인가능한 항공사는 '대한항공, 아시아나항공, 진에어, 에어부산, 이스타항공, 제주항공'이상 6개 항공사입니다. 티웨이항공은 여기서 출력되지 않았으나, 《항공운행정보목록》을 API KEY로 조회했으때에는 출력되었습니다. 


























  1. [네이버 지식백과] 트랜잭션 [Transaction] (정보통신용어사전, 2008.1.15, 일진사) [본문으로]
  2. [네이버 지식백과] 콜백 [call back] (용어해설) [본문으로]