서버사이드/NodeJS

Nestjs 따라잡기 4

Dohoon 2024. 8. 20. 23:20

미들웨어

  • 클라이언트의 요청을 라우터 핸들러가 받기 전에 가로채 다른 작업을 처리
  • 공통 실행해야 하는 인증, 로깅
  • 요청과 응답 객체를 변경 가능
  • 요청의 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 컨테이너에서 액세스 불가