ExpressNode.js 위에서 동작하는 웹 프레임워크로, 내부적으로 Node.js의 내장 HTTP 모듈을 사용합니다. 이 내장 HTTP 모듈은 기본적으로 HTTP 서버를 생성하고, 클라이언트의 요청을 처리하며, 응답을 반환하는 기능을 제공합니다.

다음은 Node.js의 내장 HTTP 모듈을 사용하여 간단한 웹 서버를 구현한 코드 예제와, 이를 바탕으로 HTTP 라이브러리가 어떻게 동작하는지 설명한 내용입니다.


코드 예제

const http = require('http');

// http.createServer() 함수는 HTTP 서버를 생성합니다.
// 콜백 함수는 클라이언트의 요청이 들어올 때마다 실행됩니다.
const server = http.createServer((req, res) => {
  // req: http.IncomingMessage 객체
  // res: http.ServerResponse 객체

  // 클라이언트가 보낸 요청 URL, 메서드 등의 정보를 출력할 수 있습니다.
  console.log(`${req.method} ${req.url}`);

  // 응답 상태 코드와 헤더를 설정합니다.
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');

  // 응답 본문을 전송합니다.
  res.end('Hello, Node.js HTTP Server!\\n');
});

// 서버가 3000번 포트에서 요청을 기다립니다.
server.listen(3000, () => {
  console.log('서버가 포트 3000에서 실행 중입니다.');
});

코드 설명

  1. 모듈 불러오기:

    const http = require('http');
    
  2. HTTP 서버 생성:

    const server = http.createServer((req, res) => { ... });
    
  3. 요청 처리:

    console.log(`${req.method} ${req.url}`);
    
  4. 응답 구성:

    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello, Node.js HTTP Server!\\n');
    
  5. 서버 시작:

    server.listen(3000, () => { ... });
    

HTTP 라이브러리의 동작 원리