Node.js 를 배워보자/3. Node.js 내장 모듈

Node.js HTTP 모듈 (웹 서버 구축,HTTP 요청/응답 처리)

_Blue_Sky_ 2024. 9. 30. 18:47
728x90
728x90

Node.js HTTP 모듈로 웹 서버 구축하기: HTTP 요청/응답 처리 심층 분석

Node.js는 비동기 I/O 모델을 기반으로 하여 실시간 웹 애플리케이션 개발에 매우 적합한 환경을 제공합니다. 이러한 Node.js의 강점을 극대화하기 위해 가장 먼저 이해해야 할 모듈이 바로 HTTP 모듈입니다. HTTP 모듈은 Node.js에서 웹 서버를 구축하고 HTTP 요청과 응답을 처리하는 데 필수적인 기능을 제공합니다.

1. HTTP 모듈이란?

HTTP 모듈은 Node.js의 핵심 모듈 중 하나로, 클라이언트와 서버 간의 HTTP 통신을 위한 다양한 기능을 제공합니다. 이 모듈을 사용하여 HTTP 서버를 생성하고, 들어오는 요청을 처리하고, 응답을 보낼 수 있습니다.

2. 웹 서버 구축하기

Node.js에서 HTTP 모듈을 사용하여 간단한 웹 서버를 구축하는 방법은 다음과 같습니다.

const http = require('http');

const server = http.createServer((req, res) => {
  // 요청 처리 로직
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!\n');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});
 
  • http 모듈 가져오기: require('http')를 통해 HTTP 모듈을 가져옵니다.
  • 서버 생성: http.createServer() 메서드를 사용하여 서버를 생성하고, 요청 처리 함수를 인자로 전달합니다.
  • 요청 처리: 요청 처리 함수는 요청 객체(req)와 응답 객체(res)를 인자로 받아 요청을 처리하고 응답을 생성합니다.
  • 응답: res.statusCode, res.setHeader(), res.end() 메서드를 사용하여 응답 상태 코드, 헤더, 본문을 설정하고 응답을 종료합니다.
  • 서버 실행: server.listen() 메서드를 사용하여 지정된 포트(3000)에서 서버를 실행합니다.
728x90

3. HTTP 요청/응답 처리

3.1 요청 객체(req)

요청 객체는 클라이언트의 요청에 대한 정보를 담고 있는 객체입니다. 주요 속성으로는 다음과 같은 것들이 있습니다.

  • url: 요청 URL
  • method: HTTP 메서드 (GET, POST, PUT, DELETE 등)
  • headers: 요청 헤더
  • body: 요청 본문 (POST 메서드의 경우)

3.2 응답 객체(res)

응답 객체는 서버에서 클라이언트로 보내는 응답을 생성하는 데 사용되는 객체입니다. 주요 메서드로는 다음과 같은 것들이 있습니다.

  • statusCode: 응답 상태 코드 설정
  • setHeader(): 응답 헤더 설정
  • write(): 응답 본문에 데이터 쓰기
  • end(): 응답 종료

4. 다양한 HTTP 메서드 처리

HTTP 메서드에 따라 요청을 다르게 처리해야 합니다.

  • GET: 특정 자원을 가져올 때 사용
  • POST: 새로운 자원을 생성할 때 사용
  • PUT: 기존 자원을 수정할 때 사용
  • DELETE: 기존 자원을 삭제할 때 사용
const http = require('http');

const server = http.createServer((req, res) => {
  if (req.method === 'GET') {
    // GET 요청 처리
  } else if (req.method === 'POST') {
    // POST 요청 처리
  } else {
    // 다른 메서드 처리
  }
});
 

5. URL 파라미터 처리

URL에 포함된 쿼리 문자열을 통해 전달된 파라미터를 처리하기 위해서는 url 모듈을 사용하여 URL을 파싱해야 합니다.

const url = require('url');
const http = require('http');

const server = http.createServer((req, res) => {
  const parsedUrl = url.parse(req.url, true);
  const query = parsedUrl.query;
  // query 객체를 사용하여 파라미터 값 추출
});
 

6. 라우팅

다양한 URL에 대한 요청을 각기 다른 함수로 처리하기 위해 라우팅 기능이 필요합니다. Node.js에서는 Express.js와 같은 프레임워크를 사용하여 라우팅을 간편하게 처리할 수 있습니다.

7. 추가 기능

  • 파일 서버: fs 모듈을 사용하여 정적 파일을 제공하는 파일 서버를 구축할 수 있습니다.
  • 미들웨어: 요청과 응답 사이에 추가적인 작업을 수행하는 미들웨어를 사용하여 기능을 확장할 수 있습니다.
  • 웹 소켓: 실시간 양방향 통신을 위한 웹 소켓 서버를 구축할 수 있습니다.

결론

Node.js의 HTTP 모듈은 웹 서버를 구축하고 HTTP 요청/응답을 처리하는 데 필수적인 역할을 합니다. 이 글에서는 HTTP 모듈의 기본적인 사용법과 HTTP 요청/응답 처리에 대해 자세히 알아보았습니다. 더욱 복잡하고 다양한 기능의 웹 서버를 구축하기 위해서는 Express.js와 같은 프레임워크를 활용하는 것이 좋습니다.

 

728x90
728x90