미들웨어
- 클라이언트의 요청을 라우터 핸들러가 받기 전에 가로채 다른 작업을 처리
- 공통 실행해야 하는 인증, 로깅
- 요청과 응답 객체를 변경 가능
- 요청의 validation 체크
사용법
- @Injectable 데코레이터 사용
- NestMiddleware 인터페이스를 implements해서 사용
- Module class 내부에 configure 사용하여 선언 -> NestModule implements
- .forRoutes({path: '...', method:RequestMethod.Get} );
- .forRoutes( {path: 'ab*cd',method:RequestMethod.ALL} );
MiddlewareConsumer
- Middleware 관리를 위한 내장 모듈
- 헬퍼클래스를 사용하여 여러 스타일로 미들웨어를 설정
- forRoutes() 는 단일 문자열, 멀티 문자열, RouteInfo 객체, 컨트롤러 클래스 사용
- exclude()를 통해 라우터 예외 처리 가능
Functional middleware
- class 대신 function을 이용해서 미들웨어 사용 가능
여러 미들웨어 사용 가능
- consumer.apply(cors(), logger(), authfilter() ).forRoutes(filterController);
Global 미들웨어
- 모든 경로에서 사용하는 미들웨어
- INestApplication.user() 사용가능
- DI 컨테이너에서 액세스 불가