기술 학습

미들웨어(Middleware)란?

hawon6691 2026. 2. 4. 11:22
728x90

1. 미들웨어란 무엇인가? (Definition)

미들웨어는 이름 그대로 **'중간(Middle)에 있는 소프트웨어'**입니다. 클라이언트(브라우저)에서 보낸 **요청(Request)**이 서버의 최종 **응답(Response)**에 도달하기 전까지 거쳐가는 모든 함수를 말합니다.

Express 앱은 사실상 수많은 미들웨어가 줄지어 서 있는 파이프라인과 같습니다.


2. 왜 사용하는가? (Identity & Benefits)

만약 미들웨어가 없다면, 모든 라우트(URL)마다 똑같은 코드를 반복해서 써야 합니다. 미들웨어를 쓰면 공통적인 작업을 한 번에 관리할 수 있어요.

  • 공통 로직 처리: 로그인 여부 확인, 로그 기록(Logging), 데이터 파싱 등 모든 요청에 필요한 작업을 자동화합니다.
  • 보안: 이상한 요청이 들어오면 최종 목적지에 도달하기 전에 미리 차단합니다.
  • 코드의 재사용성: 한 번 만든 미들웨어 함수는 여기저기서 재사용할 수 있어 코드가 깔끔해집니다.

3. 어떻게 사용하는가? (Usage)

미들웨어 함수는 세 개의 인자를 가집니다: req, res, 그리고 next.

① 미들웨어의 구조

JavaScript
 
const myMiddleware = (req, res, next) => {
  console.log('요청이 지나가는 중입니다...');
  
  // 중요! 다음 미들웨어로 넘어가려면 반드시 next()를 호출해야 합니다.
  next(); 
};

② 미들웨어 사용 패턴

  1. 애플리케이션 레벨 (모든 요청에 적용):
  2. JavaScript
     
    app.use(myMiddleware);
    
  3. 라우터 레벨 (특정 주소에만 적용):
  4. JavaScript
     
    app.get('/admin', myMiddleware, (req, res) => {
      res.send('관리자 페이지');
    });
    

4. 미들웨어의 핵심 규칙

  1. 순서가 생명이다: 미들웨어는 위에 적힌 순서대로 실행됩니다. 로그를 남기는 미들웨어는 보통 가장 위에 둡니다.
  2. 반드시 응답하거나 넘기거나: res.send() 등으로 응답을 끝내거나, next()를 호출해 다음으로 넘겨야 합니다. 둘 다 안 하면 브라우저는 무한 대기 상태(Pending)에 빠집니다.
  3. 에러 처리 미들웨어: 인자가 4개(err, req, res, next)인 특수한 미들웨어는 에러가 발생했을 때만 작동합니다.

요약하자면

  • 무엇? 요청과 응답 사이의 '검문소' 같은 함수.
  • 왜? 반복되는 작업을 줄이고 코드를 관리하기 편하게 하려고.
  • 어떻게? app.use()로 등록하고, 안에서 next()를 호출해 흐름을 이어간다.
728x90

'기술 학습' 카테고리의 다른 글

TypeScript란?  (0) 2026.02.05
req, res, next 란?  (0) 2026.02.04
Passport란?  (0) 2026.02.04
엔드포인트란?  (0) 2026.02.02
express.Router() 란?  (0) 2026.01.29