자신이 개발할 서비스에 API가 필요하고, API가 무엇인지에 대해 알고 있지만,
공공데이터포털의 불친절함 때문에 API의 사용법이 궁금한 프로그래머가 이 글을 읽는다는 전제 하에
본인의 Ebu 개발 경험을 바탕으로 설명하고자 한다.
목표 : 정류소 이름을 검색하여 그 정류소에 관련된 정보를 얻고 싶다.
버스 정류소 관련 API를 얻기 위해 공공데이터포털에서 '정류소'라고 검색해보자
클릭하여 들어가면 이런 창이 덩그러니 뜬다. 일단 활용신청을 하고 서비스키를 받아놓자
그리고 마이페이지에서 신청한 API 목록을 확인한다.
스크롤을 쭉 내리면 자신이 신청한 상세기능정보와 참고문서가 보인다.
그리고 빨간 네모로 표시된 파일이 오늘 우리가 확인해야할 명세서이다.
명세서란 이름 그대로 우리가 사용해야할 API의 사용방법이 이 파일에 설명되어 있다.
위의 화면은 우리가 신청한 상세기능 정보 목록이 바로 해당 API에서 제공해주는 기능들이다.
그 중 7번을 보자
getStationByNameList : 정류소 명칭 검색
어떻게 써야할까? 명세서를 보자
네 번째 표에 상세기능 명세가 있다.
API는 일종의 함수라고 생각하면 편하다.
요청메시지 명세는 API가 작동하기 위해 필요로하는 파라미터를 뜻한다.
적어도 어떤 정류소에 관한 정보를 얻고 싶다면 그 정류소의 이름정도는 알려줘야하지 않겠는가?
이 표에서는 '인증키'와 '정류소명 검색어', 두 input값이 필요하다는 것을 알아두고 넘어가자.
입력값이 들어왔으니 출력값이 나와야 한다.
위의 표가 바로 인증키와 정류소명 검색어를 입력한 결과, 제공받는 출력 값들의 변수다.
입력 : serviceKey(인증키), stSrch(정류소명 검색어) -> 출력 : stld(정류소ID), stNm(정류소명) 등등
이런 식으로 정보를 제공받게 되는 것이다.
코드의 작성은 다음 포스팅에서 언급하기로 하고, 명세서를 마저 보자.
위 칸의 REST url은 우리가 상세 기능명세 표에서 본 Call Back URL과 관련있다.
이 Call Back URL 뒤에 우리가 입력해야 할 input값 두 개, 인증키와 정류소명 검색어가 들어가야 한다.
(&stSrch=%ea~~~~ 왜 이렇게 입력되어있는지는 모르겠지만 우리가 입력한 검색어가 들어가는 자리로 생각하자)
그러면 URL을 통해 입력된 정보에 응답하여 우리가 필요로 하는 정보를 뱉어주는 원리이다
그럼 응답메시지가 튀어나오게 된다.
이 메시지는 XML이라는 데이터 형식인데, 출력값들을 한꺼번에 저장하는 구조체 정도의 느낌으로 생각하면 될 것 같다.
맨 밑줄의 <stId>222000453</stId>는 출력값 변수인 stId의 값이 222000453이라는 뜻이다.
그럼 홈페이지 예제를 통해 이 API가 제대로 작동하는지 확인해보자.
실행을 누르면 창이 생긴다. 샘플데이터에 자신이 알고 싶은 정류소명 검색어를 아무거나 넣고 미리보기를 눌러보자
본인은 '고려대'로 검색해보았다.
그럼 이렇게 '고려대'라는 검색어를 포함한 모든 검색 결과가 나온다.
XML 형식으로 나오는데 우리가 알아야 할 건,
<msgBody>의 하위 계층인 각 <itemList>가 정류소 하나하나 단위의 정보를 포함한 '덩어리'라는 것이다.
들여쓰기를 기준으로 그 계층이 나뉜다고 보면 된다.
<itemList>가 정류소에 대한 정보를 보여준다.
여기까지 API의 명세서를 읽는 방법에 대하여 알아보았다.
API 이용방법에 대한 대략적인 개념을 잡았다면 이 글의 목적은 충분히 달성한 셈이다.
다음 포스팅에서는 파이썬을 이용해, 코드를 작성하여 실제로 API의 데이터를 뽑아내는 방법에 대해 설명하겠다
'프로그래밍 정보공유' 카테고리의 다른 글
git 브랜치 pull request 하기 (0) | 2020.07.06 |
---|---|
함수형 컴포넌트 생성과 props로 함수 파라미터 넘기기 (0) | 2020.07.06 |
nested array 펼치기 (0) | 2020.07.01 |
nested된 JSON 데이터의 특정한 key값만 뽑아내기 (0) | 2020.07.01 |
공공데이터포털 Open API 사용하기 下 - 코드 예시 (0) | 2019.12.28 |