안녕하세요. 혀코입니다.
오늘은 Node.js에서 Request를 사용해서 날씨 API를 사용하는 방법에 대해서 알아보겠습니다.
여기서 사용할 API는 darksky에서 제공하는 날씨 정보 API를 사용해 보겠습니다.
회원가입을 하고 로그인을 하면 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를 사용하는 방법을 알아보았습니다.
유용하셨다면, 공감과 구독 부탁 드립니다.
감사합니다. :)
댓글