반응형
Express 미들웨어 실행 순서 완전 정리

Express는 Node.js 기반 웹 프레임워크로, 요청(Request)과 응답(Response) 사이에 미들웨어(Middleware)가 실행됩니다. 미들웨어 실행 순서를 이해하면 라우팅, 에러 처리, 인증, 로깅 등 서버 로직을 깔끔하게 구성할 수 있습니다.
핵심 포인트
- Express는 요청이 들어오면 등록된 미들웨어를 순서대로 실행
- 일반 미들웨어 → 라우터 → 에러 처리 미들웨어 순으로 처리
- next() 호출 시 다음 미들웨어로 넘어감
- 미들웨어 순서를 잘못 설계하면 요청 처리 실패나 에러 발생 가능
1. Express 미들웨어 기본 구조
미들웨어는 다음 3가지 인자를 가진 함수 형태입니다.
function myMiddleware(req, res, next) {
console.log('요청 처리 중...');
next(); // 다음 미들웨어로 전달
}
app.use(myMiddleware);
💡 req, res는 요청/응답 객체, next()는 다음 미들웨어로 넘어가는 함수
2. 미들웨어 실행 순서
Express는 등록 순서대로 미들웨어를 실행합니다. 일반적인 흐름은 다음과 같습니다.
- 글로벌 미들웨어(app.use): 모든 요청에 먼저 적용
- 라우터 미들웨어(app.use('/route')): 특정 경로 요청 처리
- 라우트 핸들러(app.get/post 등): 실제 요청 처리
- 에러 처리 미들웨어(err, req, res, next): try/catch 또는 next(err) 호출 시 실행
- 404 처리 미들웨어: 어떤 라우트에도 해당하지 않는 요청 처리
3. 실행 순서 예제
const express = require('express');
const app = express();
// 1. 글로벌 미들웨어
app.use((req, res, next) => {
console.log('1️⃣ 글로벌 미들웨어');
next();
});
// 2. 특정 경로 미들웨어
app.use('/user', (req, res, next) => {
console.log('2️⃣ /user 미들웨어');
next();
});
// 3. 라우트 핸들러
app.get('/user', (req, res) => {
console.log('3️⃣ /user 라우트 처리');
res.send('User Page');
});
// 4. 에러 처리 미들웨어
app.use((err, req, res, next) => {
console.error('4️⃣ 에러 처리', err);
res.status(500).send('서버 에러');
});
// 5. 404 처리
app.use((req, res) => {
console.log('5️⃣ 404 처리');
res.status(404).send('Not Found');
});
💡 콘솔 출력 순서를 보면 미들웨어 순서를 쉽게 이해할 수 있음
4. next()와 흐름 제어
- next()를 호출하면 다음 미들웨어로 이동
- next('route') → 해당 라우트 다음으로 건너뛰기
- next(err) → 에러 처리 미들웨어로 이동
- next()를 호출하지 않으면 요청은 여기서 멈춤
5. 정리
- 미들웨어는 등록 순서대로 실행됨
- 글로벌 → 경로 → 라우트 → 에러 → 404 순으로 처리
- next() 호출로 흐름 제어 가능
- 순서를 잘 설계하면 서버 로직이 깔끔하고 유지보수 쉬움
반응형
'개발 · IT > 백엔드' 카테고리의 다른 글
| Spring Boot vs Node.js — 어느 쪽을 선택할까? (0) | 2025.11.25 |
|---|---|
| PM2로 Node 서버 운영하기 — 설치부터 운영·모니터링·무중단 배포까지 (0) | 2025.11.21 |
| DB HA(고가용성)란? — 개념부터 아키텍처·운영 체크리스트까지 (0) | 2025.11.19 |
| Redis Sentinel 구조 완전 정리 — 개념 · 구성 요소 · 페일오버 흐름 (0) | 2025.11.19 |
| Redis TTL & SETEX 완전 정리 — 개념 · 명령어 · 실전 예제 (0) | 2025.11.19 |
댓글