서론

본 글에서는 NodeJS를 활용하여 Open API를 읽어오는 방법에 대해 상세하게 알아보겠습니다. 이를 통해 개발자들이 Open API와 상호작용하는 방법을 이해할 수 있으며, 이를 활용하여 다양한 서비스를 제공할 수 있습니다.

1. Open API 개요

1.1. Open API의 정의

Open API(오픈 애플리케이션 프로그래밍 인터페이스)란, 개발자들이 자유롭게 사용할 수 있도록 공개된 API(Application Programming Interface)를 의미합니다. 이를 통해 개발자들은 특정 웹 사이트나 애플리케이션의 기능과 데이터에 접근할 수 있으며, 이를 활용하여 새로운 서비스를 만들거나 기존 서비스를 개선할 수 있습니다.

1.2. Open API의 장점

  • 데이터 공유를 통한 서비스 개선
  • 개발자들의 참여 확대와 협업 강화
  • 비용 절감 및 개발 효율성 향상

2. NodeJS에서 Open API를 읽어 오는 방법

2.1. 필요한 모듈 설치

먼저, NodeJS에서 Open API를 사용하기 위해 필요한 모듈을 설치해야 합니다. 이 예제에서는 axios 모듈을 사용하겠습니다.

npm install axios

2.2. Open API 요청 및 응답 처리

다음은 NodeJS에서 Open API를 요청하고 응답을 처리하는 예제 코드입니다.

const axios = require('axios');

async function getOpenApiData(url) {
  try {
    const response = await axios.get(url);
    return response.data;
  } catch (error) {
    console.error(`Error: ${error}`);
    return null;
  }
}

const openApiUrl = '오픈 API 주소';
getOpenApiData(openApiUrl)
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(`Error: ${error}`);
  });

3. 실제 예제를 통한 Open API 활용

3.1. 공공 데이터 포털 Open API 활용 예제

이번 예제에서는 공공 데이터 포털에서 제공하는 날씨 정보 Open API를 활용해보겠습니다.

  1. 공공 데이터 포털(https://www.data.go.kr) 접속 후 회원가입 및 로그인
  2. 원하는 Open API 검색 후, 서비스 이용 신청
  3. 발급된 인증키 및 API 문서 확인 후 필요한 정보 정리

3.2. 날씨 정보 Open API 활용 코드 작성

공공 데이터 포털에서 발급받은 인증키와 API 문서를 바탕으로 날씨 정보를 조회하는 코드를 작성해보겠습니다.

const axios = require('axios');

async function getWeatherData(url) {
  try {
    const response = await axios.get(url);
    return response.data;
  } catch (error) {
    console.error(`Error: ${error}`);
    return null;
  }
}

const apiKey = '발급받은 인증키';
const apiUrl = `http://apis.data.go.kr/1360000/VilageFcstInfoService/getVilageFcst?serviceKey=${apiKey}&pageNo=1&numOfRows=10&dataType=JSON&base_date=20211003&base_time=0500&nx=60&ny=127`;

getWeatherData(apiUrl)
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(`Error: ${error}`);
  });

4. 데이터 가공 및 활용

응답 받은 데이터를 원하는 형태로 가공하여 활용할 수 있습니다. 예를 들어, 날씨 정보를 추출하여 웹 사이트에 표시하거나, 이메일을 통해 알림을 보낼 수 있습니다.

4.1. 날씨 정보 데이터 가공

응답 받은 날씨 정보 데이터에서 필요한 정보만 추출해보겠습니다.

function parseWeatherData(data) {
  const weatherData = data.response.body.items.item;
  const parsedData = weatherData.map(item => {
    return {
      category: item.category,
      fcstTime: item.fcstTime,
      fcstValue: item.fcstValue
    };
  });

  return parsedData;
}

getWeatherData(apiUrl)
  .then(data => {
    const parsedData = parseWeatherData(data);
    console.log(parsedData);
  })
  .catch(error => {
    console.error(`Error: ${error}`);
  });

4.2. 가공된 데이터 활용

가공된 날씨 정보를 웹 사이트에 표시하는 예제 코드입니다.

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
  if (req.url === '/') {
    getWeatherData(apiUrl)
      .then(data => {
        const parsedData = parseWeatherData(data);
        res.writeHead(200, { 'Content-Type': 'text/html' });
        res.write('<html><head><title>날씨 정보</title></head><body>');
        res.write('<h1>날씨 정보</h1>');
        res.write('<table><tr><th>category</th><th>fcstTime</th><th>fcstValue</th></tr>');
        parsedData.forEach(item => {
          res.write(`<tr><td>${item.category}</td><td>${item.fcstTime}</td><td>${item.fcstValue}</td></tr>`);
        });
        res.write('</table></body></html>');
        res.end();
      })
      .catch(error => {
        console.error(`Error: ${error}`);
      });
 } else {
   res.writeHead(404, { 'Content-Type': 'text/html' });
   res.write('<html><head><title>404 Not Found</title></head><body><h1>404 Not Found</h1></body></html>');
      res.end();
    }
   });

   server.listen(3000, () => {
   console.log('Server is running on http://localhost:3000');
});

이 코드를 실행한 후, 웹 브라우저에서 `http://localhost:3000`에 접속하면 날씨 정보가 표시된 웹 페이지를 확인할 수 있습니다.

5. 결론

본 글에서는 NodeJS를 활용하여 Open API를 읽어오는 방법에 대해 자세히 알아보았습니다. 공공 데이터 포털에서 제공하는 날씨 정보 Open API를 사용한 예제를 통해 실제로 데이터를 조회하고 가공하여 웹 사이트에 표시하는 과정을 살펴보았습니다.

이를 통해 개발자들은 다양한 Open API를 활용하여 자신만의 서비스를 만들거나 기존 서비스를 개선할 수 있습니다. 특히, 공공 데이터 포털과 같은 공공 기관에서 제공하는 데이터를 활용하면 사회 문제 해결에 기여할 수 있는 서비스를 개발할 수 있습니다.

앞으로도 NodeJSOpen API를 활용한 다양한 서비스 개발에 도전해보시기 바랍니다.