본문 바로가기

Node.js

[오픈 API] nodejs를 이용해 버스 도착 정보 얻기 - 1. API 사용법

● 요약


API 사용법과 정류장에 도착하는 버스 정보를 얻는 프로그램을 만들기 전, 그 큰 틀과 진행 방향에 대한 글.

코드 및 프로그램 자체에 대한 설명은 다음 편(https://senticoding.tistory.com/46)에 적겠습니다.



● 버스 도착 정보를 얻기 위한 진행 방식


 * 예제는 어느 한 정류장의 버스 도착정보들을 얻는 것을 목표로 한다.

1. 정류장이름 혹은 번호으로 정류장id를 찾는다.

2. 얻은 정류장 id를 통해 그 정류장에 도착하는 버스들의 도착 정보를 얻는다

( 허나 이 도착정보 중 각각의 버스는 routeId라는 변수를 이용해 표현되어있어

바로 어떤 버스인지는 알아볼 수 없다. )

3. routeIdrouteName 즉 버스 번호로 바꾸는 과정을 거친다.

● 필요한 API 목록


공공데이터포탈 홈페이지(https://www.data.go.kr/) -> 데이터셋 -> 아래 API들 검색

을 통해 API 이용 신청을 하면 됩니다.


    - 정류소 조회 서비스

    - 버스 노선 조회 서비스

    - 버스 도착 정보 조회 서비스


* 주의 api신청 후 한 두세시간 뒤에 승인이 나는 것 같았습니다.

충분한 시간이 지나기 전에 api를 요청하면 오류가 날 거예요

(아마 Authentication rejected라거나 그런 거 였던 것 같음.)


● 예제


예를 들어 경희대학교에 도착하는 버스 정보를 얻는 예제를 만들어보겠습니다.

정류장의 이름을 찾아봅시다. 번호를 입력하는 게 더 정확하긴해요



▲ 정류소 정보가 04-241이라고 나와있는데, 이제 04241이라고 api에 query로 전달해주면 됩니다.


▲ "정류소 조회 서비스" api의 "정류소명/번호 목록 조회"와 얻었던 정류소 번호를 이용해 미리보기로 잠시 확인해본 모습.

해당 정류장의 stationId를 얻을 수 있음을 알 수 있다.




▲ "버스 도착 정보 조회 서비스" api의 "버스 도착 정보 목록 조회"와 stationId를 이용해 해당 정류장에 도착하는 버스에 대한 정보를 알 수 있다. (api 페이지에서 미리보기를 눌러 확인 가능)

predictTime1, predictTime2가 도착 예상 시간입니다!



▲ 도착 정보로 뜬 버스 목록 중 하나인 routeId 200000010 버스 routeName을 얻어보겠습니다.


"버스 노선 조회 서비스" api의 "노선 정보 항목 조회"와 routeId를 이용해 해당 버스의 routeName을 얻을 수 있습니다. (api 페이지에서 미리보기를 눌러 확인 가능)


routeId 200000010900번 버스를 의미하는 것이었네요.



사실 위의 과정까진 코딩은 필요없었습니다.

그냥 버스 도착 정보를 얻기 위한 과정에 대한 설명이었고 이제 코딩으로 넘어가는 부분은 아래 링크에서 다루겠습니다.



[오픈 API] nodejs를 이용해 버스 도착 정보 얻기 - 2. 코드