본문 바로가기
  • optimuslee
Nestjs

[Nestjs] 6-2. 미들웨어의 여러 기능들

by OptimusLee 2022. 6. 5.
728x90
반응형

 

 

 

 

✨안녕하세요!? 오늘은 지난 시간에 이어서 미들웨어 다른 기능들에 대해 알아보는 시간을 갖도록 하겠습니다. 코드는 저번 시간에 사용했던 내용과 크게 다르지 않습니다. 변형되는 부분들만 수정해주시면 됩니다~!! 

 

 

 

 

위의 코드를 기준으로 하나씩 변형하면 새롭게 접하는 기능들에 대해 알아보도록 하겠습니다. 

 

 



🎉Roue Wildcards

 

export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer.apply(LoggerMiddleware).forRoutes('c*ts');
  }
}

 

위 코드는 "cts", "cats", "c_ts" 와 같은 경로로 요청을 받을 수 있습니다. *외에도 ?, +, () 문자들도 와일드 카드에서 동일하게 작동합니다. (📢단, 하이폰(-)과 점(.)은 문자열로 인식하니 주의하세요)

 

 

 

 

🎉특정 경로 제외

export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer.apply(LoggerMiddleware).exclude(
    { path: 'cats', method: RequestMethod.GET },
    { path: 'cats', method: RequestMethod.POST }
  ).forRoutes('cats');
  }
}

 

미들웨어가 적용되지 않도록 특정 경로를 제외할 수 있습니다. exclude() 메소드를 사용하여 쉽게 원하는 경로를 제외할 수 있습니다. 위의 코드를 보면 알 수 있듯이, 예외를 원하는 라우팅 경로를 입력하고 해당 http method를 알려주면 됩니다. 

 

 

 

 

🎉Multiple middleware

 

export class AppModule implements NestModule {
 consumer.apply(cors(), helmet(), LoggerMiddleware).forRoutes("cats");
  }
}

 

위의 코드를 보면, 여러 미들웨어를 바인딩할 수 있습니다. cors()는 cors 이슈를 막아주는 외부 라이브러리 미들웨어이며 helmet()은 http 헤더 설정을 자동으로 바꾸어 앱의 취약성으로부터 앱을 보호하는 라이브러리 함수입니다. 이런 식으로 apply에 원하는 미들웨어를 순차적으로 입력하여 원하는 기능을 수행하도록 할 수 있습니다. 

 

 

 

여기까지 미들웨어의 개념과 활용법 그리고 여러 기능들에 대해 알아보았습니다. 여러분들도 여러분만의 미들웨어를 작성하여 적용시켜보세요~!! 그러면 이만~~~

 

 

 

728x90
반응형