안녕하세요
지난 포스팅에서 API 키를 발급받았으니 직접 활용하는 예제를 작성해보도록 하겠습니다!
먼저 필요한 요구사항은 Node.js가 설치되어있어야합니다!
API에 대한 사용방법(메뉴얼)을 확인해봅시다.
워드파일로 첨부되어있는 파일을 열어보시면 메뉴얼을 확인하실 수 있습니다.
확인해보니 위와 같은 방법으로 요청하면 됩니다.
http://openapi.gbis.go.kr/ws/rest/busarrivalservice/station?serviceKey=키값&stationId=정류소ID
또한 경기 버스정보 홈페이지에서도 메뉴얼을 확인하실 수 있습니다.
http://www.gbis.go.kr/gbis2014/publicService.action?cmd=openApiRest
테스트 부분에 가서 테스트해보니
아래와 같이 XML로 데이터가 응답되는 모습을 확인하실 수 있습니다.
위와 같은 데이터를 필요한 부분만 추출하여 활용하면 됩니다!
원하는 폴더에서 npm init 명령으로 package.json 파일을 생성합시다.
그리고 모듈 2개를 설치해야합니다.
request 모듈과 cheerio 모듈입니다.
npm install request --save
npm install cheerio --save
설치가 완료되었으면 js 파일을 하나 생성하고 코드를 작성해봅시다.
위와같이 첫번 째 줄에 두줄을 추가해줍니다.
방금 설치한 request와 cheerio 모듈을 변수에 불러오는 코드입니다.
3개의 변수를 선언해줍니다.
$url 에는 메뉴얼에 나와있는 REST API 경로를 넣어주시면 됩니다.
$KEY 에는 발급받은 API키를 넣어주시면 되구요
$station에는 임시 테스트용 정류소 ID를 넣어줍니다.
http://openapi.gbis.go.kr/ws/rest/busarrivalservice/station?serviceKey=키값&stationId=정류소ID
와 같은 형식으로 만들기 위해 변수와 문자열을 합쳐서 하나의 문자열로 만들어줍니다.
아래에서 console.log로 콘솔에 출력해보는 모습입니다.
그리고 위의 코드도 추가해줍니다.
( ' 따옴표가 아닌 ` 백틱 문자입니다! - 숫자 1옆에 있음)
먼저 busArrivalList태그로 구분하여 데이터를 나눈 후 하나하나씩 돌며
no1, no2 변수에 도착할 버스의 차량 번호를 추출하는 모습입니다.
차량번호는 plateNo1, plateNo2태그 안에 저장되어있습니다.
find("찾을 태그, 또는 클래스, 아이디 등")
find 함수로 해당 영역을 찾을 후 text() 함수를 통해 텍스트만 추출하는 모습입니다.
JQuery와 사용하는법이 매우 비슷한걸 아실 수 있습니다.
태그 구성은 아래에서 확인하실 수 있습니다.
busArrivalList로 구분지어보면 아래 사진에서는 2개의 데이터로 나눌 수 있습니다.
그리고 각각 plateNo1, plateNo2가 있는것을 확인하실 수 있습니다.
predictTime1, predictTime2는 버스의 도착시간입니다. (단위는 분)
자세한 사항은 경기버스정보 홈페이지의 메뉴얼에서 확인가능합니다
(아래 이미지 참고)
실행시켜봅시다.
node 파일이름.js
변수와 문자열을 이은 URL이 처음으로 출력되고, 그 아래로 버스 정보가 출력되는 모습을 확인하실 수 있습니다.
버스 차량번호뿐만 아니라 predictTime1, predictTime2 태그의 데이터를 파싱하여 도착시간까지 확인해볼 수 있습니다.
아래는 그에 대한 예제입니다.
이와같이 오픈 API를 이용하여 공공데이터를 조회하여 활용할 수 있습니다!
버스 API는 이뿐만이 아니라 정류장 조회, 버스 정보 조회 등 여러 API가 있으니 API를 혼합하여 더욱 완성도 높게
개발해보실 수 있습니다!
감사합니다.