NestJS · · 1 min read
8. 미들웨어
미들웨어(Middleware) 는 라우트 핸들러 이전에 실행되는 함수다. 요청·응답 객체에 접근해 로깅·인증 전처리·CORS 등을 처리한다. (Express 미들웨어와 동일 개념)
8.1. 클래스 미들웨어
import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
console.log(`${req.method} ${req.originalUrl}`);
next(); // 반드시 호출해야 다음 단계로 진행
}
}
8.2. 적용 (MiddlewareConsumer)
모듈에서 configure() 로 적용 범위를 지정한다.
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(LoggerMiddleware)
.forRoutes('users'); // 특정 경로에만 적용
}
}
8.3. 요청 생명주기 순서
미들웨어 → 가드 → 인터셉터(전) → 파이프 → 핸들러 → 인터셉터(후) → 예외 필터
NestJS 요청 처리에서 미들웨어가 가장 먼저 실행된다.