✨JSY
article thumbnail

먼저

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

 

공공데이터 포털

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

www.data.go.kr

정부에서 공공의 목적으로 제공하는 API를 이용해서 원하는 데이터를 가져올 수 있습니다.

우선 위의 주소로 들어가 로그인을 합니다.

 

필요한 API 찾기

저의 경우는 인천국제공항의 항공편에 대한 정보를 가져오고 싶어서 '인천국제공항공사' 라고 검색했습니다

오픈 API 탭으로 들어갑니다.

밑에 정말 많은 API 들이 있는데 XML 혹은 JSON 이라고 데이터 형식이 되어 있으면 사용 가능한 API라고 보시면 됩니다.

하지만, JSON이 없고 XML만 있는 API는 사용을 추천드리지 않습니다!

(그 이유는 xml2js 라는 라이브러리 추가적으로 설치가 필요하기 때문)

 

제가 원하던 API를 찾았습니다.

바로 클릭해서 들어갑시다.

 

확인할 정보는 다음과 같습니다.

1. JSON 제공 여부

2. 짧은 설명 읽기

3. (선택사항) 참고문서 : 자세한 API 설명이 나와있습니다. 요청 응답 값을 잘 모를 때 참고해 봅시다.

4. 목록 : API 엔드포인트 총 몇 개인지 확인

5. 활용승인 절차 : 자동승인이라면, 활용신청 누르자마자 바로 사용 가능함

6. 요청 주소 : 엔드포인트 붙은 URL <= 여기로 요청 보내면 데이터 갖다줌

7. 서비스 URL : 엔드포인트 제외한 URL

 

그리고 마지막으로

요청 파라미터와 응답 결과가 어떻게 되는 지 확인합니다.

 

모두 확인했다면

활용신청을 눌러주세요

 

활용신청하기

아무렇게나 적고 동의 체크한 후 활용신청을 누르면
자동승인의 경우 바로 API를 써 볼 수 있습니다.

 

API에 따라 2시간 정도 이후에 쓸 수 있는 경우도 있고,

(이 경우는 2시간 이내에 API 쓸 수 있다는 안내 팝업이 뜸 아무것도 안 뜨면 바로 써볼 수 있는 API임)

 

신청 후 심사 과정을 거쳐야 하는 경우도 있습니다.

(활용승인 절차가 '심사' 인 경우)

 

실제로 써보기

이제 마이페이지 > 왼쪽에 활용신청 현황 눌러줍니다.

 

요청 변수에 파라미터를 넣고 미리보기 버튼을 눌러서 api를 테스트해 볼 수 있습니다.

저는

airport_code 에 IAD (워싱턴 공항 코드)

type 에 json (xml이 기본값이므로 반드시 json이라고 넣어줘야 함)

serviceKey에 일반 인증키(Encoding)을 넣어봤습니다. (본인 인증키 넣으시면 됨)

 

정상적으로 잘 나오는 것을 확인했습니다.

 

코드로 확인

이제 VSC에서 직접 예시 코드를 치면서 확인해보겠습니다.

 

먼저, 필요한 라이브러리는 express, request 입니다.

npm install express request

 

저는 여객편 주간 운항 현황 - 도착 에 대한 응답 결과를 확인해보기 위해 아래와 같이 코드를 완성했습니다.

const express = require("express");
const request = require("request");

const app = express();

/** 포트번호 */
const PORT = 8080;

app.listen(PORT, () => {
  console.log(`localhost:${PORT}에 서버 열림`);
});

/** API 인증키 */
const API_KEY =
  "본인 인증키 입력";
/** API URL */
const API_URL = "https://apis.data.go.kr/B551177/StatusOfPassengerFlightsDSOdp";
/** API 엔드포인트 */
const API_ENDPOINT = "/getPassengerArrivalsDSOdp";

app.get("/", (req, res) => {
  let queryParams = "?" + encodeURIComponent("serviceKey") + "=" + API_KEY;
  queryParams +=
    "&" + encodeURIComponent("airport_code") + "=" + encodeURIComponent("IAD");
  queryParams +=
    "&" + encodeURIComponent("type") + "=" + encodeURIComponent("json");

  request(
    {
      url: API_URL + API_ENDPOINT + queryParams,
      method: "GET",
    },
    (error, response, body) => {
      res.json(JSON.parse(body));
    }
  );
});

API_KEY에 본인 인증키를 복붙한 후

localhost:8080 서버를 열면 응답 결과가 나오도록 했습니다.

 

터미널에 명령어를 쳐서 서버를 열면..!

 

데이터를 잘 가져오는 것을 알 수 있습니다.

 

여기서

API_KEY, API_URL, API_ENDPOINT, 그리고 queryParams 만 수정해주면

다른 API도 사용 가능!!😊

profile

✨JSY

@JUNSANG YOO

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!