티스토리 뷰

Node.js로 웹 서버 구현하는 방법

Node.js는 자바스크립트 기반의 런타임 환경으로, 서버 측 애플리케이션 개발에 널리 사용됩니다. 이 글에서는 Node.js를 이용해 간단한 웹 서버를 구현하는 방법을 단계별로 설명합니다. 또한, Express 프레임워크를 활용해 더 효율적인 서버 구축 방법도 다룹니다.

 

👇👇👇 내용 자세히보기 👇👇👇 

설명 영상 바로가기


Node.js란 무엇인가?

Node.js는 V8 자바스크립트 엔진을 기반으로 동작하며, 비동기 이벤트 기반 구조를 통해 고성능 네트워크 애플리케이션을 개발할 수 있습니다. 특히, 다음과 같은 특징을 가지고 있습니다:

  • 비동기 I/O 처리: 높은 처리량과 확장성을 제공합니다.
  • 단일 스레드 이벤트 루프: 메모리 사용량이 적고, 실시간 애플리케이션에 적합합니다.
  • JavaScript 사용: 프론트엔드와 백엔드 모두 동일한 언어로 개발 가능.

기본 HTTP 웹 서버 구축

Node.js의 내장 모듈인 http를 사용하여 간단한 HTTP 웹 서버를 구축할 수 있습니다.

1. 프로젝트 디렉토리 생성

먼저, 프로젝트 디렉토리를 생성하고 Node.js 환경을 초기화합니다:

mkdir node_server
cd node_server
npm init -y

2. HTTP 모듈로 서버 생성

다음은 기본적인 HTTP 서버를 생성하는 코드입니다:

const http = require('http'); // http 모듈 불러오기

const PORT = 3000; // 사용할 포트 번호

// 서버 생성
const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' }); // 상태 코드와 헤더 설정
  res.end('Hello, Node.js!'); // 응답 본문 전송 및 종료
});

// 서버 실행
server.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

3. 실행 및 확인

위 코드를 server.js 파일에 저장한 후, 다음 명령어로 실행합니다:

node server.js

브라우저에서 http://localhost:3000에 접속하면 "Hello, Node.js!"라는 메시지가 출력됩니다.


Express를 활용한 웹 서버 구축

Express는 Node.js의 대표적인 웹 프레임워크로, 간단하고 효율적으로 웹 애플리케이션을 개발할 수 있도록 도와줍니다.

1. Express 설치

Express를 설치하려면 아래 명령어를 실행하세요:

npm install express --save

2. Express로 기본 서버 작성

다음은 Express를 사용하여 간단한 웹 서버를 구현한 예제입니다:

const express = require('express'); // Express 모듈 불러오기
const app = express(); // 애플리케이션 생성

const PORT = 3000;

// 라우팅 설정
app.get('/', (req, res) => {
  res.send('<h1>Hello, Express!</h1>');
});

// 서버 실행
app.listen(PORT, () => {
  console.log(`Express server is running on http://localhost:${PORT}`);
});

3. 정적 파일 제공

Express를 이용하면 정적 파일을 쉽게 제공할 수 있습니다. 예를 들어, public 폴더에 HTML 파일을 넣고 다음과 같이 설정합니다:

app.use(express.static('public'));

이제 브라우저에서 /파일명으로 정적 파일에 접근할 수 있습니다.


추가 기능: POST 요청 처리

Node.js는 클라이언트 요청 데이터를 처리하기 위해 req 객체를 활용합니다. 아래는 POST 요청 데이터를 처리하는 예제입니다:

const bodyParser = require('body-parser');
app.use(bodyParser.json()); // JSON 파싱 미들웨어 추가

app.post('/data', (req, res) => {
  console.log(req.body); // 클라이언트가 보낸 데이터 출력
  res.send('Data received!');
});

고급 기능: 미들웨어와 라우팅

Express에서는 미들웨어와 라우터를 활용해 복잡한 애플리케이션 구조를 설계할 수 있습니다.

미들웨어 추가

미들웨어는 요청과 응답 사이에서 특정 작업을 수행합니다:

app.use((req, res, next) => {
  console.log(`Request URL: ${req.url}`);
  next(); // 다음 미들웨어로 전달
});

라우팅 분리

라우팅을 별도의 파일로 분리하여 관리할 수 있습니다:

// routes/home.js
const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.send('Welcome to the Home Page!');
});

module.exports = router;

// app.js에서 라우터 연결
const homeRouter = require('./routes/home');
app.use('/', homeRouter);

결론

Node.js는 경량화된 구조와 빠른 속도로 인해 현대 웹 개발에서 중요한 역할을 하고 있습니다. 특히 Express와 같은 프레임워크를 활용하면 더욱 효율적으로 애플리케이션을 개발할 수 있습니다. 위에서 설명한 내용을 바탕으로 자신만의 웹 서버를 만들어 보세요.

 


자주 묻는 질문 (FAQ)

Q1: Node.js와 Express의 차이점은 무엇인가요?
A1: Node.js는 자바스크립트 런타임 환경이고, Express는 Node.js 위에서 동작하는 웹 프레임워크입니다. Express는 라우팅 및 미들웨어 기능 등을 제공해 더 쉽게 서버를 구축할 수 있도록 돕습니다.

Q2: HTTP 상태 코드란 무엇인가요?
A2: HTTP 상태 코드는 클라이언트 요청에 대한 서버의 응답 상태를 나타냅니다. 예를 들어, 200은 성공을 의미하고, 404는 요청한 리소스를 찾을 수 없음을 나타냅니다.

Q3: Node.js에서 비동기 처리는 어떻게 이루어지나요?
A3: Node.js는 이벤트 루프와 콜백 함수를 통해 비동기 처리를 수행합니다. 이를 통해 높은 동시성을 유지하면서도 성능 저하 없이 작업을 처리할 수 있습니다.

반응형