본문 바로가기
개발 · IT/백엔드

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

by 플라퉁 2025. 11. 21.
반응형

 

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는 등록 순서대로 미들웨어를 실행합니다. 일반적인 흐름은 다음과 같습니다.

  1. 글로벌 미들웨어(app.use): 모든 요청에 먼저 적용
  2. 라우터 미들웨어(app.use('/route')): 특정 경로 요청 처리
  3. 라우트 핸들러(app.get/post 등): 실제 요청 처리
  4. 에러 처리 미들웨어(err, req, res, next): try/catch 또는 next(err) 호출 시 실행
  5. 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() 호출로 흐름 제어 가능
  • 순서를 잘 설계하면 서버 로직이 깔끔하고 유지보수 쉬움
반응형

댓글