본문 바로가기
Programming/Node.js

Node.js에서 Request를 사용해서 API 사용할때 에러 핸들링 하는 방법

by 혀코 2020. 1. 6.

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

오늘은 Node.js에서 Request를 사용해서 API 사용할때 에러 핸들링 하는 방법에 대해서 알아보겠습니다.

에러가 나는 상황은 크게 두가지가 있습니다. 네트워크 오류 또는 해당하는 데이터가 없는 오류가 있습니다.

다음 app.js코드에서 Request를 사용해서 mapbox.com에서 제공하는 api를 사용하여 위도와 경도 좌표를 구하고 있습니다.

const request = require('request')

const geocodeURL = 'https://api.mapbox.com/geocoding/v5/mapbox.places/Los%20Angeles.json?access_token={{api-key}}&limit=1'

request({url: geocodeURL, json: true}, (error, response) => {
    const latitude = response.body.features[0].geometry.coordinates[1];
    const longitude = response.body.features[0].geometry.coordinates[0];
    console.log(latitude, longitude)
})

여기에서 네트워크 오류일때 나타나는 오류를 표시해 보겠습니다. 

const request = require('request')

const geocodeURL = 'https://api.mapbox.com/geocoding/v5/mapbox.places/Los%20Angeles.json?access_token={{api-key}}&limit=1'

request({url: geocodeURL, json: true}, (error, response) => {
    if (error) {
        console.log('Unable to connect to location services!')
    } else {
        const latitude = response.body.features[0].geometry.coordinates[1];
        const longitude = response.body.features[0].geometry.coordinates[0];
        console.log(latitude, longitude)
    }
})

와이파이 또는 네트워크 연결을 해제한 다음 실행하면 의도한 것처럼 'Unable to connect to location services!' 문구가 표시됩니다.

이번에는 해당하는 데이터가 없을 경우의 에러를 핸들링해보겠습니다.

const request = require('request')

const geocodeURL = 'https://api.mapbox.com/geocoding/v5/mapbox.places/Los%20Angeles.json?access_token={{api-key}}&limit=1'

request({url: geocodeURL, json: true}, (error, response) => {
    if (error) {
        console.log('Unable to connect to location services!')
    } else if (response.body.features.length === 0) {
        console.log('Unable to find locations. Try another search.')
    } else {
        const latitude = response.body.features[0].geometry.coordinates[1];
        const longitude = response.body.features[0].geometry.coordinates[0];
        console.log(latitude, longitude)
    }
})

geocodeURL의 Los%20Angeles 대신에 다른 문자를 넣어보면 의도한 대로 'Unable to find locations. Try another search.' 문구가 표시되는 것을 확인할 수 있습니다.

 

이렇게 Node.js에서 Request를 사용해서 API 사용할때 에러 핸들링 하는 방법에 대해서 알아보았습니다.

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

감사합니다.

댓글