Node.js에서 GET 요청을 만드는 방법을 배우고 싶으신가요? 그렇다면 올바른 장소에 오신 것입니다. 이 블로그 게시물에서는 Node.js에서 GET 요청을 만드는 방법과 함께 내장된 http
모듈 및 인기 있는 axios
라이브러리를 사용하는 방법을 보여드리겠습니다. 또한 GET 요청이 무엇인지, 왜 중요한지, 그리고 응답 데이터를 처리하는 방법도 설명하겠습니다. 이 게시물을 읽고 나면 Node.js에서 프로처럼 GET 요청을 할 수 있게 될 것입니다.
GET 요청이란 무엇인가요?
GET 요청은 가장 일반적인 HTTP 요청 유형 중 하나입니다. HTTP는 하이퍼텍스트 전송 프로토콜(Hypertext Transfer Protocol)의 약자로, 웹 브라우저와 웹 서버 간의 통신을 위한 표준 프로토콜입니다. HTTP 요청은 웹 브라우저가 웹 서버에 데이터를 요청하거나 제출하기 위해 보내는 메시지입니다. HTTP 응답은 웹 서버가 요청된 데이터나 제출 확인을 웹 브라우저에 다시 보내는 메시지입니다.
GET 요청은 웹 서버에 특정 리소스를 다시 보내 달라고 요청하는 HTTP 요청의 일종입니다. 예를 들어, 웹 브라우저에 URL을 입력하면 해당 URL과 관련된 웹 페이지를 보내 달라고 웹 서버에 GET 요청을 하는 것입니다. GET 요청은 추가 정보 제공 또는 요청된 리소스를 필터링하는 키-값 쌍인 쿼리 매개변수를 포함할 수도 있습니다. 예를 들어, Google에서 무언가를 검색할 때, 검색어, 언어 및 기타 옵션을 지정하는 쿼리 매개변수가 있는 GET 요청을 Google 웹 서버에 보내는 것입니다.
GET 요청은 왜 중요한가요?
GET 요청은 데이터 요청의 기본 방법이기 때문에 중요합니다. GET 요청을 사용하여 HTML, JSON, XML, 이미지, 비디오 등 다양한 유형의 데이터에 접근할 수 있습니다. 또한 GET 요청을 사용하여 다른 웹 애플리케이션의 데이터와 서비스에 접근할 수 있는 웹 API와 상호작용할 수 있습니다. 예를 들어, GET 요청을 사용하여 OpenWeatherMap API에서 날씨 정보를 가져오거나, IMDb API에서 영화 정보를 얻거나, Dog API에서 개 이미지를 가져올 수 있습니다.
GET 요청은 사용하기 쉽고 테스트하기 쉬운 점에서도 중요합니다. 특별한 도구나 라이브러리 없이도 모든 웹 브라우저를 사용하여 GET 요청을 만들 수 있습니다. Postman이나 Apidog와 같은 도구를 사용하여 다양한 매개변수와 헤더로 GET 요청을 만들고 테스트할 수도 있습니다. 브라우저의 개발자 도구나 도구의 인터페이스를 사용하여 응답 데이터와 헤더를 검사할 수도 있습니다.
Node.js란 무엇인가요?
Node.js는 웹 브라우저 외부에서 JavaScript 코드를 실행할 수 있는 JavaScript 런타임 환경입니다. Node.js는 Google Chrome V8 JavaScript 엔진을 기반으로 하며, 데이터 집약적이고 실시간인 웹 애플리케이션을 구축하는 데 사용됩니다. Node.js는 프로젝트에 기능을 추가하는 데 사용할 수 있는 다양한 모듈과 패키지를 보유하고 있습니다. Node.js의 장점은 다음과 같습니다:
- 비동기식 및 이벤트 기반 특성 덕분에 빠르고 확장성이 뛰어납니다.
- 크로스 플랫폼이며 오픈 소스입니다. 즉, 다양한 운영 체제에서 실행할 수 있으며 개발에 기여할 수 있습니다.
- 일관되고 통합적입니다. 웹 애플리케이션의 프론트엔드와 백엔드 모두에 같은 언어를 사용할 수 있습니다.

Node.js에서 http
모듈을 사용하여 GET 요청 만드는 방법
Node.js는 웹 브라우저 외부에서 JavaScript 코드를 실행할 수 있는 JavaScript 런타임 환경입니다. Node.js는 웹 서버, 웹 애플리케이션 및 웹 API를 만드는 데 자주 사용됩니다. Node.js는 HTTP 요청 및 응답을 생성할 수 있게 해주는 내장 http
모듈도 제공합니다.
http
모듈을 사용하여 Node.js에서 GET 요청을 만들려면 다음 단계를 따라야 합니다:
require
함수를 사용하여http
모듈을 가져옵니다.- 호스트 이름, 포트, 경로 및 헤더와 같은 GET 요청에 대한 정보를 포함하는
options
객체를 생성합니다. http.get
메소드를 사용하여 GET 요청을 만들며, 첫 번째 인수로options
객체를, 두 번째 인수로 콜백 함수를 전달합니다. 응답이 수신되면 콜백 함수가 실행되고, 이 함수의 매개변수로response
객체가 전달됩니다.response
객체를 사용하여 응답 데이터와 헤더를 처리합니다.response
객체는http.IncomingMessage
클래스의 인스턴스이며,ReadableStream
인터페이스를 구현합니다. 즉,response
객체를 데이터 스트림으로 사용하고data
,end
,error
와 같은 이벤트를 수신할 수 있습니다. 또한,response.statusCode
속성을 사용하여 응답의 상태 코드를 가져오고,response.headers
속성을 사용하여 응답의 헤더를 가져올 수 있습니다.response.on
메소드를 사용하여response
객체의 이벤트 리스너를 등록합니다. 예를 들어,response.on('data', callback)
메소드를 사용하여 데이터가 수신될 때 발생하는data
이벤트를 수신할 수 있습니다. 콜백 함수는chunk
객체를 매개변수로 가지며, 이는 데이터의 버퍼입니다.chunk.toString()
메소드를 사용하여 버퍼를 문자열로 변환하고, 전체 응답 데이터를 저장할 변수를 추가할 수 있습니다.response.on('end', callback)
메소드를 사용하여 응답이 완료될 때 발생하는end
이벤트를 수신할 수 있습니다. 콜백 함수는 매개변수를 가지지 않으며, 로그를 기록하거나 응답 데이터를 파싱하는 것과 같은 최종 작업을 수행하는 데 사용할 수 있습니다.response.on('error', callback)
메소드를 사용하여 응답 중 오류가 발생할 때 발생하는error
이벤트를 수신할 수 있습니다. 콜백 함수는error
객체를 매개변수로 가지며, 로그를 기록하거나 오류를 발생시키는 등의 작업을 처리하는 데 사용할 수 있습니다.
다음은 http
모듈을 사용하여 Node.js에서 GET 요청을 만드는 예시입니다:
// http 모듈 가져오기
const http = require('http');
// 옵션 객체 생성
const options = {
hostname: 'api.openweathermap.org',
port: 80,
path: '/data/2.5/weather?q=Los%20Angeles&appid=YOUR_API_KEY',
headers: {
'User-Agent': 'Node.js'
}
};
// GET 요청 수행
http.get(options, (response) => {
// 응답 데이터를 저장할 변수 초기화
let data = '';
// 데이터 이벤트 수신
response.on('data', (chunk) => {
// 데이터 변수에 청크 추가
data += chunk.toString();
});
// 끝 이벤트 수신
response.on('end', () => {
// 상태 코드와 헤더 로그
console.log(`상태 코드: ${response.statusCode}`);
console.log(`헤더: ${JSON.stringify(response.headers)}`);
// 데이터 JSON으로 파싱
const weather = JSON.parse(data);
// 날씨 정보 로그
console.log(`도시: ${weather.name}`);
console.log(`온도: ${weather.main.temp}`);
console.log(`설명: ${weather.weather[0].description}`);
});
// 오류 이벤트 수신
response.on('error', (error) => {
// 오류 발생
throw error;
});
});
Node.js에서 axios
라이브러리를 사용하여 GET 요청 만드는 방법
http
모듈은 HTTP 요청 및 응답을 위한 기본 기능을 제공하는 저수준 모듈입니다. 그러나 더 높은 수준의 사용자 친화적인 모듈을 사용하고 싶다면 axios
라이브러리를 사용할 수 있습니다. Axios는 HTTP 요청을 만들고 응답을 처리할 수 있는 강력한 라이브러리로, 프로미스 및 async/await 구문을 사용합니다. Axios는 인터셉터, 변환기, 타임아웃, 취소 토큰 등과 같은 기능도 지원합니다.
Node.js에서 axios
라이브러리를 사용하여 GET 요청을 만들려면 다음 단계를 따르면 됩니다:
npm
명령으로axios
라이브러리를 설치합니다:npm install axios
.require
함수를 사용하여axios
라이브러리를 가져옵니다.axios.get
메소드를 사용하여 GET 요청을 수행하며, 리소스의 URL을 첫 번째 인수로, 선택적config
객체를 두 번째 인수로 전달합니다.config
객체는 요청 헤더, 매개변수, 타임아웃 등 GET 요청에 대한 정보를 포함할 수 있습니다.axios.get
메소드는 약속을 반환하며, 이는response
객체로 해결되거나error
객체로 거부됩니다.- 해결된 약속을 처리하기 위해
then
메소드를 사용하며, 첫 번째 인수로 콜백 함수를 전달합니다. 콜백 함수는 응답 데이터, 상태, 헤더 등을 포함하는response
객체를 매개변수로 가집니다.response.data
속성을 사용하여 응답 데이터를 접근하고,response.status
속성을 사용하여 응답의 상태 코드를 접근할 수 있습니다. 또한, 거부된 약속을 처리하기 위해catch
메소드를 사용하여 콜백 함수를 전달할 수 있습니다. 콜백 함수는 오류 메시지, 코드, 요청, 응답을 포함한error
객체를 매개변수로 가집니다.error.response
속성을 사용하여 응답 객체에 접근하고,error.request
속성을 사용하여 요청 객체에 접근할 수 있습니다. - 또는
async/await
구문을 사용하여 GET 요청과 응답을 처리할 수 있습니다. 그렇게 하려면 GET 요청을 포함하는 함수 앞에async
키워드를 사용하고,axios.get
메소드 앞에await
키워드를 사용해야 합니다. 이는 비동기 코드를 동기식으로 작성할 수 있게 해주며,response
객체를 변수에 할당할 수 있습니다. 그런 다음try/catch
블록을 사용하여 GET 요청 중 발생할 수 있는 오류를 처리할 수 있습니다.
다음은 Node.js에서 axios
라이브러리를 사용하여 GET 요청을 만드는 예시입니다:
// axios 라이브러리 가져오기
const axios = require('axios');
// then 메소드를 사용하여 GET 요청 수행
axios.get('http://api.openweathermap.org/data/2.5/weather?q=Los%20Angeles&appid=YOUR_API_KEY', {
headers: {
'User-Agent': 'Node.js'
}
}).then((response) => {
// 상태 코드와 헤더 로그
console.log(`상태 코드: ${response.status}`);
console.log(`헤더: ${JSON.stringify(response.headers)}`);
// 날씨 정보 로그
console.log(`도시: ${response.data.name}`);
console.log(`온도: ${response.data.main.temp}`);
console.log(`설명: ${response.data.weather[0].description}`);
}).catch((error) => {
// 오류 메시지와 코드 로그
console.log(`오류 메시지: ${error.message}`);
console.log(`오류 코드: ${error.code}`);
// 응답 상태와 데이터 로그 (있을 경우)
if (error.response) {
console.log(`응답 상태: ${error.response.status}`);
console.log(`응답 데이터: ${JSON.stringify(error.response.data)}`);
}
// 요청 방법과 경로 로그 (있을 경우)
if (error.request) {
console.log(`요청 방법: ${error.request.method}`);
console.log(`요청 경로: ${error.request.path}`);
}
});
// async/await 구문을 사용하여 GET 요청 수행
async function getWeather() {
try {
// GET 요청 대기 및 응답 객체를 변수에 할당
const response = await axios.get('http://api.openweathermap.org/data/2.5/weather?q=Los%20Angeles&appid=YOUR_API_KEY', {
headers: {
'User-Agent': 'Node.js'
}
});
// 상태 코드와 헤더 로그
console.log(`상태 코드: ${response.status}`);
console.log(`헤더: ${JSON.stringify(response.headers)}`);
// 날씨 정보 로그
console.log(`도시: ${response.data.name}`);
console.log(`온도: ${response.data.main.temp}`);
console.log(`설명: ${response.data.weather[0].description}`);
} catch (error) {
// 오류 메시지와 코드 로그
console.log(`오류 메시지: ${error.message}`);
console.log(`오류 코드: ${error.code}`);
// 응답 상태와 데이터 로그 (있을 경우)
if (error.response) {
console.log(`응답 상태: ${error.response.status}`);
console.log(`응답 데이터: ${JSON.stringify(error.response.data)}`);
}
// 요청 방법과 경로 로그 (있을 경우)
if (error.request) {
console.log(`요청 방법: ${error.request.method}`);
console.log(`요청 경로: ${error.request.path}`);
}
}
}
// getWeather 함수 호출
getWeather();
Node.js에서 응답 데이터 처리 방법
Node.js에서 GET 요청을 만들고 응답을 받으면 응답 데이터로 뭔가를 하고 싶을 수 있습니다. 예를 들어, 콘솔에 데이터를 표시하거나, 데이터를 파일에 저장하거나, 데이터를 JSON 또는 XML로 파싱하거나, 데이터를 다른 용도로 사용할 수 있습니다.
응답 데이터의 유형과 형식에 따라 데이터를 처리하기 위해 다양한 방법 및 모듈을 사용해야 할 수 있습니다. 다음은 몇 가지 일반적인 시나리오와 처리 방법입니다:
- 응답 데이터가 문자열인 경우,
console.log
메소드를 사용하여 콘솔에 데이터를 표시하거나fs.writeFile
메소드를 사용하여 데이터를 파일에 저장할 수 있습니다.fs
모듈은 Node.js에서 파일 시스템을 작업할 수 있도록 해주는 내장 모듈입니다.require
함수를 사용하여fs
모듈을 가져오고,fs.writeFile
메소드를 사용하여 파일 이름, 데이터 및 콜백 함수를 인수로 전달하여 데이터를 파일에 쓸 수 있습니다. 콜백 함수는error
객체를 매개변수로 가지며, 파일 쓰기 과정 중 발생할 수 있는 오류를 처리하는 데 사용할 수 있습니다. - 응답 데이터가 버퍼인 경우,
buffer.toString
메소드를 사용하여 버퍼를 문자열로 변환한 후 위와 같은 방법을 사용하여 데이터를 표시하거나 저장할 수 있습니다. 버퍼는 바이트 시퀀스를 나타내는 이진 데이터 유형입니다. 버퍼는 이미지, 비디오 또는 압축 파일과 같은 이진 데이터를 처리하는 데 자주 사용됩니다.buffer.toString
메소드를 사용하여 버퍼를 문자열로 변환할 수 있으며, 선택적으로 인코딩 인수를 전달하여 문자열의 문자 인코딩을 지정할 수 있습니다. 기본 인코딩은utf8
이며, 텍스트 데이터의 가장 일반적인 인코딩입니다. - 응답 데이터가 JSON인 경우,
JSON.parse
메소드를 사용하여 데이터를 JavaScript 객체로 파싱하고, 그 객체의 속성과 메소드를 사용하여 데이터를 접근하고 조작할 수 있습니다. JSON은 JavaScript 객체 표기법(JavaScript Object Notation)의 약자로, 데이터 교환 및 저장을 위한 표준 형식입니다. JSON 데이터는 중괄호로 묶인 키-값 쌍과 대괄호로 묶인 배열로 구성된 특정 구문을 따르는 문자열입니다.JSON.parse
메소드를 사용하여 JSON 문자열을 JavaScript 객체로 파싱할 수 있으며, JSON 문자열을 인수로 전달하면 됩니다. 이 메소드는 다른 객체처럼 사용할 수 있는 JavaScript 객체를 반환합니다. - 응답 데이터가 XML인 경우,
xml2js
라이브러리를 사용하여 데이터를 JavaScript 객체로 파싱하고, 그 객체의 속성과 메소드를 사용하여 데이터를 접근하고 조작할 수 있습니다. XML은 확장 가능한 마크업 언어(Extensible Markup Language)의 약자로, 데이터 교환 및 저장을 위한 또 다른 표준 형식입니다. XML 데이터는 태그로 묶인 요소, 따옴표로 묶인 속성 및 텍스트 내용을 포함한 특정 구문을 따르는 문자열입니다.xml2js
라이브러리는 XML 데이터를 JavaScript 객체로 변환하는 데 사용할 수 있는 서드파티 라이브러리입니다.xml2js
라이브러리를 설치하려면npm
명령을 사용하세요:npm install xml2js
.require
함수를 사용하여xml2js
라이브러리를 가져오고,xml2js.parseString
메소드를 사용하여 XML 문자열을 JavaScript 객체로 파싱할 수 있으며, XML 문자열과 콜백 함수를 인수로 전달합니다. 콜백 함수는error
객체 및result
객체를 매개변수로 가지며, 이를 사용하여 오류를 처리하거나 파싱된 객체에 접근할 수 있습니다.
Apidog를 사용하여 NodeJs HTTP GET 요청을 테스트하는 방법
Apidog를 사용하여 HTTP GET 요청을 테스트하려면 다음 간단한 단계를 따라야 합니다:
- Apidog를 열고 "새 요청" 버튼을 클릭하여 새 요청을 생성합니다.

2. 요청의 메소드로 "GET"을 선택합니다.

3. API 엔드포인트의 URL을 입력합니다.

그런 다음 "전송" 버튼을 클릭하여 API에 요청을 보냅니다.

보시다시피, Apidog는 요청의 URL, 매개변수, 헤더 및 본문을 보여주고, 응답의 상태, 헤더 및 본문을 표시합니다. 요청 및 응답의 응답 시간, 크기 및 형식도 확인할 수 있으며, 이를 다양한 웹 API와 비교할 수 있습니다.
결론
이번 블로그 게시물에서는 Node.js에서 http
모듈과 axios
라이브러리를 사용하여 GET 요청을 만드는 방법을 보여드렸습니다. 또한 다양한 형식과 시나리오에서 응답 데이터를 처리하는 방법도 보여드렸습니다. 유용한 것을 배우셨기를 바라며 이 게시물을 즐겁게 읽으셨기를 바랍니다.
읽어주셔서 감사합니다. 행복한 코딩 되세요!