본문 바로가기
Programming/Node.js

Node.js에서 Request를 사용해서 날씨 API를 사용하는 방법

by 혀코 2020. 1. 6.

안녕하세요. 혀코입니다.

오늘은 Node.js에서 Request를 사용해서 날씨 API를 사용하는 방법에 대해서 알아보겠습니다.

여기서 사용할 API는 darksky에서 제공하는 날씨 정보 API를 사용해 보겠습니다.

 

https://darksky.net/dev

 

Dark Sky

 

darksky.net

회원가입을 하고 로그인을 하면 api를 사용할 수 있는 권한을 얻을 수 있습니다.

api는 url 형태로 제공되고 해당 url로 접속하면 json 형태의 data가 들어있습니다.

 

App을 만들 폴더를 만들고 app.js파일을 생성하고 npm 초기화해서 package.json 파일을 생성합니다.

$ mkdir weather-app
$ cd weather-app
$ touch app.js
$ npm init -y

그 다음으로 request를 사용하기 위해서 request npm 모듈을 설치하겠습니다.

$ npm install request

그 다음으로 app.js파일을 다음과 같이 작성합니다.

const request = require('request')

const url = 'dark-sky-api-url'

request({ url: url}, (error, response) => {
    console.log(response)
})

이렇게 작성하고, 다음 명령어를 실행하면,

$ node app.js

문자열의 수많은 데이터를 표시합니다.

const request = require('request')

const url = 'dark-sky-api-url'

request({ url: url}, (error, response) => {
    const data = JSON.parse(response.body)
    console.log(data)
})

위와 같이 작성하면, JSON.parse를 통해 문자열의 수많은 데이터를 json 형태로 구조화를 해서 각 키에 맞는 값에 접근을 쉽게 할 수 있습니다.

현재 날씨를 확인하려면 app.js를 다음과 같이 작성합니다.

const request = require('request')

const url = 'dark-sky-api-url'

request({ url: url}, (error, response) => {
    const data = JSON.parse(response.body)
    console.log(data.currently)
})

위에 작성된 코드는 아래 처럼 작성할 수 있습니다. 

const request = require('request')

const url = 'dark-sky-api-url'

request({ url: url, json: true }, (error, response) => {
    console.log(response.body.currently)
})

 

여기서 현재 온도와 비가 올 확율을 표시해 보도록 하겠습니다.

api url 뒤에 units=si를 지정하면 화씨 대신에 섭씨로 표시할 수 있습니다.

const request = require('request')

const url = 'dark-sky-api-url?units=si'

request({ url: url, json: true }, (error, response) => {
    console.log('지금 현재 온도는 ' + response.body.currently.temperature + ' 입니다. 비가 올 확률은 ' + response.body.currently.precipProbability*100 + '% 입니다.')
})

 

api url 뒤에 lang=ko를 지정하면 영어 대신에 한국어로 된 설명을 표시할 수 있습니다.

하루의 날씨 요약 정보도 함께 표시해 보겠습니다.

const request = require('request')

const url = 'dark-sky-api-url?lang=ko&units=si'

request({ url: url, json: true }, (error, response) => {
    console.log(response.body.daily.data[0].summary + '. 지금 현재 온도는 ' + response.body.currently.temperature + ' 입니다. 비가 올 확률은 ' + response.body.currently.precipProbability*100 + '% 입니다.')
})

 

 

이렇게 Node.js에서 Request를 사용해서 날씨 API를 사용하는 방법을 알아보았습니다.

유용하셨다면, 공감과 구독 부탁 드립니다.

감사합니다. :) 

댓글