Node.js Express로 웹 서버 구축하기
최근 웹 개발에서 Node.js와 Express 프레임워크의 조합이 많이 사용되고 있습니다. 이 조합은 특히 자바스크립트 개발자가 손쉽게 서버 사이드 애플리케이션을 구축할 수 있도록 도와줍니다. 이번 포스팅에서는 Node.js와 Express를 이용하여 간단한 웹 서버를 만드는 방법을 알아보겠습니다.

Node.js란?
Node.js는 Chrome의 V8 자바스크립트 엔진을 기반으로 하는 런타임 환경으로, 주로 서버 사이드에서 자바스크립트를 실행할 수 있게 해줍니다. 비동기 이벤트 기반의 구조를 가지고 있어 높은 성능과 처리량을 자랑합니다. 이를 통해 개발자는 효율적인 웹 애플리케이션을 구축할 수 있습니다.
Express.js 개요
Express.js는 Node.js에서 가장 인기 있는 웹 프레임워크 중 하나로, REST API 및 웹 애플리케이션 구축을 쉽게 해줍니다. Express는 라우팅, 미들웨어, HTTP 요청 처리 등 다양한 기능을 제공하여 개발자의 생산성을 높입니다. 또한, 자유롭게 확장 가능한 구조를 가지고 있어 필요한 기능을 추가하기 편리합니다.
웹 서버 설정하기
다음 단계로, 실제로 웹 서버를 만들어 보겠습니다. 준비물이 필요합니다:
- Node.js가 설치된 컴퓨터
- 코드 편집기 (예: VSCode)

프로젝트 폴더 생성
우선 프로젝트 폴더를 생성해주시고, 해당 폴더로 이동합니다. 터미널을 열고 아래의 명령어를 입력합니다.
mkdir my-express-app
cd my-express-app
npm 초기화 및 Express 설치
다음으로 npm을 사용하여 프로젝트를 초기화합니다. 아래 명령어를 입력해주세요:
npm init -y
이 명령어를 실행하면 기본적인 package.json 파일이 생성됩니다. 이후 Express를 설치합니다.
npm install express
서버 코드 작성하기
루트 디렉토리에 app.js
라는 파일을 생성하고 아래와 같은 코드를 입력합니다:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('안녕하세요, Express 서버!');
});
app.listen(port, () => {
console.log(서버가 실행 중입니다: http://localhost:${port});
});
이 코드는 간단한 웹 서버를 설정하고, 루트 경로에 접근할 경우 “안녕하세요, Express 서버!”라는 메시지를 표시합니다.
서버 실행하기
아래 명령어로 서버를 실행해볼 수 있습니다:
node app.js
브라우저를 열고 http://localhost:3000
으로 접속하면 설정한 메시지를 볼 수 있습니다. 이렇게 간단하게 로컬 서버를 만들 수 있습니다.
라우트 설정하기
Express의 강력한 기능 중 하나는 라우팅입니다. 다양한 URL 경로를 처리할 수 있도록 여러 개의 라우트를 손쉽게 설정할 수 있습니다. 아래 코드를 추가하여 여러 라우트를 만들어보겠습니다:
app.get('/about', (req, res) => {
res.send('About 페이지입니다.');
});
app.get('/contact', (req, res) => {
res.send('Contact 페이지입니다.');
});
이제 http://localhost:3000/about
와 http://localhost:3000/contact
으로 접속하면 각각의 페이지로 이동할 수 있습니다.
미들웨어 사용하기
Express에서는 미들웨어를 통해 요청과 응답을 처리할 수 있습니다. 미들웨어는 요청이 들어올 때마다 실행되는 함수로, 요청을 수정하거나, 응답을 변경하거나, 요청을 다음 미들웨어로 전달할 수 있습니다.
app.use(express.json()); // JSON 요청 본문 파싱
에러 처리
서버에서 발생할 수 있는 에러를 관리하기 위해 에러 핸들러 미들웨어를 추가합니다:
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('서버 오류 발생!');
});
정적 파일 제공하기
Express는 정적 파일을 제공하는 데 유용한 기능을 가지고 있습니다. 아래 코드를 추가하여 특정 경로에서 정적 파일을 서빙할 수 있습니다:
app.use(express.static('public')); // public 폴더의 정적 파일 제공
이제 public
폴더에 있는 파일들은 해당 URL 경로로 접근할 수 있습니다.

CRUD 기능 구현하기
Express를 사용하여 CRUD(Create, Read, Update, Delete) 기능을 구현할 수 있습니다. JSON-server를 이용하여 간단하게 데이터베이스를 설정한 후에, 위에서 설명한 라우트를 통해 데이터의 생성, 조회, 수정 및 삭제 기능을 구현할 수 있습니다.
JSON-server 설치 및 설정
JSON-server를 설치하기 위해 아래의 명령어를 입력합니다:
npm install -g json-server
이는 간단한 REST API를 생성하는 데 유용합니다. JSON 파일을 기반으로 데이터베이스를 만들 수 있으며, 쉽게 CRUD 작업을 수행할 수 있습니다.
마무리
Node.js와 Express를 통해 웹 서버를 구축하는 방법에 대해 알아보았습니다. 기본적인 서버 설정부터 다양한 기능까지 익혔다면, 이제는 실전 프로젝트에 적용해보시기 바랍니다. 다양한 웹 애플리케이션을 구축하기 위한 첫 걸음을 내디딘 것입니다.
자주 찾는 질문 Q&A
Node.js란 무엇인가요?
Node.js는 Chrome의 V8 엔진을 기반으로 한 자바스크립트 런타임으로, 주로 서버 측에서 자바스크립트를 실행할 수 있도록 지원합니다. 비동기 구조로 높은 성능을 발휘합니다.
Express.js의 주요 기능은 무엇인가요?
Express.js는 라우팅, 미들웨어 관리, HTTP 요청 처리 등 다양한 기능을 제공하여 웹 애플리케이션과 REST API를 손쉽게 구축할 수 있게 합니다.
웹 서버를 설정하는 방법은?
웹 서버를 구축하기 위해 우선 Node.js와 Express를 설치한 후, 간단한 서버 코드를 작성해야 합니다. 이후 해당 코드를 실행하면 로컬 서버가 생성됩니다.
미들웨어는 어떻게 작동하나요?
미들웨어는 클라이언트의 요청을 가로채어 처리하는 함수로, 요청을 변형하거나 응답을 수정하며, 다음 미들웨어로 요청을 전달하는 기능을 수행합니다.