Node.js에서 GET 요청을 만드는 방법: 초보자 가이드

Node.js의 내장 http 모듈과 인기 있는 axios 라이브러리를 사용하여 GET 요청을 만드는 방법을 배우고, 다양한 형식과 시나리오에서 응답 데이터를 처리하는 방법도 배워보세요.

Young-jae

Young-jae

7 June 2025

Node.js에서 GET 요청을 만드는 방법: 초보자 가이드

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의 장점은 다음과 같습니다:

NodeJs Website

Node.js에서 http 모듈을 사용하여 GET 요청 만드는 방법

Node.js는 웹 브라우저 외부에서 JavaScript 코드를 실행할 수 있는 JavaScript 런타임 환경입니다. Node.js는 웹 서버, 웹 애플리케이션 및 웹 API를 만드는 데 자주 사용됩니다. Node.js는 HTTP 요청 및 응답을 생성할 수 있게 해주는 내장 http 모듈도 제공합니다.

http 모듈을 사용하여 Node.js에서 GET 요청을 만들려면 다음 단계를 따라야 합니다:

  1. require 함수를 사용하여 http 모듈을 가져옵니다.
  2. 호스트 이름, 포트, 경로 및 헤더와 같은 GET 요청에 대한 정보를 포함하는 options 객체를 생성합니다.
  3. http.get 메소드를 사용하여 GET 요청을 만들며, 첫 번째 인수로 options 객체를, 두 번째 인수로 콜백 함수를 전달합니다. 응답이 수신되면 콜백 함수가 실행되고, 이 함수의 매개변수로 response 객체가 전달됩니다.
  4. response 객체를 사용하여 응답 데이터와 헤더를 처리합니다. response 객체는 http.IncomingMessage 클래스의 인스턴스이며, ReadableStream 인터페이스를 구현합니다. 즉, response 객체를 데이터 스트림으로 사용하고 data, end, error와 같은 이벤트를 수신할 수 있습니다. 또한, response.statusCode 속성을 사용하여 응답의 상태 코드를 가져오고, response.headers 속성을 사용하여 응답의 헤더를 가져올 수 있습니다.
  5. 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 요청을 만들려면 다음 단계를 따르면 됩니다:

  1. npm 명령으로 axios 라이브러리를 설치합니다: npm install axios.
  2. require 함수를 사용하여 axios 라이브러리를 가져옵니다.
  3. axios.get 메소드를 사용하여 GET 요청을 수행하며, 리소스의 URL을 첫 번째 인수로, 선택적 config 객체를 두 번째 인수로 전달합니다. config 객체는 요청 헤더, 매개변수, 타임아웃 등 GET 요청에 대한 정보를 포함할 수 있습니다. axios.get 메소드는 약속을 반환하며, 이는 response 객체로 해결되거나 error 객체로 거부됩니다.
  4. 해결된 약속을 처리하기 위해 then 메소드를 사용하며, 첫 번째 인수로 콜백 함수를 전달합니다. 콜백 함수는 응답 데이터, 상태, 헤더 등을 포함하는 response 객체를 매개변수로 가집니다. response.data 속성을 사용하여 응답 데이터를 접근하고, response.status 속성을 사용하여 응답의 상태 코드를 접근할 수 있습니다. 또한, 거부된 약속을 처리하기 위해 catch 메소드를 사용하여 콜백 함수를 전달할 수 있습니다. 콜백 함수는 오류 메시지, 코드, 요청, 응답을 포함한 error 객체를 매개변수로 가집니다. error.response 속성을 사용하여 응답 객체에 접근하고, error.request 속성을 사용하여 요청 객체에 접근할 수 있습니다.
  5. 또는 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로 파싱하거나, 데이터를 다른 용도로 사용할 수 있습니다.

응답 데이터의 유형과 형식에 따라 데이터를 처리하기 위해 다양한 방법 및 모듈을 사용해야 할 수 있습니다. 다음은 몇 가지 일반적인 시나리오와 처리 방법입니다:

Apidog를 사용하여 NodeJs HTTP GET 요청을 테스트하는 방법

Apidog를 사용하여 HTTP GET 요청을 테스트하려면 다음 간단한 단계를 따라야 합니다:

  1. Apidog를 열고 "새 요청" 버튼을 클릭하여 새 요청을 생성합니다.
Select new request

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

Select get method

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

Enter the URL op the API

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

Send the request and analyse the answer

보시다시피, Apidog는 요청의 URL, 매개변수, 헤더 및 본문을 보여주고, 응답의 상태, 헤더 및 본문을 표시합니다. 요청 및 응답의 응답 시간, 크기 및 형식도 확인할 수 있으며, 이를 다양한 웹 API와 비교할 수 있습니다.

결론

이번 블로그 게시물에서는 Node.js에서 http 모듈과 axios 라이브러리를 사용하여 GET 요청을 만드는 방법을 보여드렸습니다. 또한 다양한 형식과 시나리오에서 응답 데이터를 처리하는 방법도 보여드렸습니다. 유용한 것을 배우셨기를 바라며 이 게시물을 즐겁게 읽으셨기를 바랍니다.

읽어주셔서 감사합니다. 행복한 코딩 되세요!

Explore more

EXAONE 3.0 7.8B 모델을 로컬에서 실행하는 방법

EXAONE 3.0 7.8B 모델을 로컬에서 실행하는 방법

이 글에서는 EXAONE 3.0 7.8B 모델을 자신의 컴퓨터에서 설치하고 실행하는 방법을 단계별로 상세히 알아보겠습니다

25 March 2025

Claude 3.7 소넷 API에 접근하고 Apidog을 사용하여 테스트하는 방법

Claude 3.7 소넷 API에 접근하고 Apidog을 사용하여 테스트하는 방법

Anthropic의 최신 출시인 Claude 3.7 Sonnet에 대해 기대하고 있으며, Apidog로 테스트하면서 API를 통한 기능을 탐색하고 싶다면, 올바른 장소에 오신 것입니다. 💡시작하기 전에 간단한 팁을 드리겠습니다: 오늘 Apidog를 무료로 다운로드하여 API 테스트 프로세스를 간소화하세요. 특히 Claude 3.7 Sonnet의 강력한 기능을 탐색하는 데 적합한 도구로, 최첨단 AI 모델을 테스트하려는 개발자에게 이상적입니다!버튼 Claude 3.7 Sonnet이 중요한 이유로 시작해봅시다. Anthropic은 최근 2025년 2월 24일에 이 모델을 공개했으며, 즉시 및 단계별 응답을 위한 하이브리드 추론 기능을 갖춘 가장 지능적인 창작물로 자리 잡았습니다. 이는 코딩, 추론 등 여러 부분에서 혁신적인 변화를 가져오며, 현재 e Anthropic API, Amazon Bedrock, Google Cloud의 Vertex AI를 통해 사용할 수 있습니다. 이 튜

25 February 2025

GitHub Copilot 무료: 어떻게 시작하나요?

GitHub Copilot 무료: 어떻게 시작하나요?

GitHub Copilot 무료 사용법을 알아보세요. 이 AI 기반 코딩 도우미에 대한 이 가이드는 VS Code와 JetBrains와 같은 인기 IDE의 설정 단계를 다루며, 무료로 스마트한 코드 제안 및 완성을 통해 생산성을 높일 수 있도록 도와줍니다!

19 December 2024

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요