개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

Express.js란? — Node.js 위에 올린 웹 프레임워크

2025년 1월 15일
ExpressNode.jsFramework웹서버Backend

Node.js만으로도 HTTP 서버를 만들 수 있지만, 라우팅·미들웨어·에러 처리를 직접 구현하면 코드가 금세 복잡해진다. Express.js는 그 반복 작업을 추상화한 경량 웹 프레임워크로, Node.js 생태계에서 사실상의 표준으로 자리잡았다. 복잡한 설정 없이 몇 줄만으로 프로덕션 수준의 HTTP 서버를 구성할 수 있다.

Express.js란

Express는 Node.js 내장 http 모듈 위에 얹은 얇은 레이어다. 직접 http.createServer를 작성할 때보다 라우팅, 요청/응답 헬퍼, Middleware 체인 등을 선언적으로 구성할 수 있게 해준다.

Client Request
      │
      ▼
┌─────────────────────────────┐
│         Express App         │
│  ┌────────────────────────┐ │
│  │   Middleware Stack     │ │
│  │  (logger → auth → ...) │ │
│  └────────────┬───────────┘ │
│               ▼             │
│  ┌────────────────────────┐ │
│  │      Router            │ │
│  │  GET /  → handler      │ │
│  │  POST /api → handler   │ │
│  └────────────┬───────────┘ │
└───────────────┼─────────────┘
                ▼
         HTTP Response

Middleware: 요청과 응답 사이에서 실행되는 함수. next를 호출해 다음 미들웨어로 제어를 넘긴다.

왜 사용하는가

Node.js http 모듈은 URL 파싱, 메서드 분기, 바디 파싱을 모두 수작업으로 해야 한다. Express는 이를 간결하게 처리한다.

기능순수 Node.jsExpress
라우팅if/else 분기app.get, app.post
바디 파싱스트림 수동 수집express.json 미들웨어
정적 파일직접 구현express.static
에러 처리try/catch 전역 관리4-인자 미들웨어

설치 방법

npm init -y
npm install express

기본 서버 예시

const express = require('express');
const app = express();

app.use(express.json());

app.get('/', (req, res) => {
  res.send('Hello, Express!');
});

app.post('/api/echo', (req, res) => {
  res.json({ received: req.body });
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

app.use: 모든 경로에 Middleware를 등록하는 메서드. 순서가 실행 순서와 동일하다.

장점

  • 경량: 코어 자체는 작고, 필요한 기능은 npm 패키지로 추가한다.
  • 유연성: 구조를 강제하지 않아 프로젝트 규모에 맞게 설계할 수 있다.
  • 생태계: passport, multer, helmet 등 Express용 미들웨어가 풍부하다.
  • 학습 곡선: Node.js를 이미 안다면 진입 장벽이 낮다.

단점

  • 구조 부재: 규칙이 없어 팀마다 폴더 구조가 달라질 수 있다.
  • 보일러플레이트: 인증, 검증, ORM 연결을 모두 직접 조립해야 한다.
  • 타입 안전성: 기본이 JavaScript라 TypeScript 설정을 별도로 해야 한다.

언제 사용하는가

Express는 빠른 프로토타이핑, REST API 서버, 소규모 마이크로서비스에 적합하다. 반면 대형 엔터프라이즈 프로젝트에서 강한 구조와 DI(Dependency Injection)가 필요하다면 NestJS 같은 상위 프레임워크가 낫다.

REST API: HTTP 메서드(GET·POST·PUT·DELETE)로 자원을 조작하는 설계 방식. Express는 이 패턴을 구현하기 가장 간단한 도구 중 하나다.

다음 글 →Express Application — app 객체와 서버 시작