테스트-NestJS강의-8-overview-middleware
- 미들웨어는 라우트 핸들러 실행 전에 호출되는 함수로, 요청과 응답 객체를 변경하거나, 요청-응답 주기를 종료하거나, 다음 미들웨어를 호출할 수 있습니다. ⚙️
- NestJS에서 미들웨어는 익스프레스 기반 또는 패스티파이 기반에 따라 동작이 다를 수 있으므로 주의해야 합니다. ⚠️
- 미들웨어는 함수 또는
@Injectable() 데코레이터가 붙은 클래스로 구현할 수 있으며, 클래스 형태는 NestMiddleware 인터페이스를 구현해야 합니다. 👨🏫
- 미들웨어는 모듈 클래스의
configure 메서드 내에서 등록하며, MiddlewareConsumer를 사용하여 특정 라우트에 적용하거나 제외할 수 있습니다. 🧩
forRoutes() 메서드를 사용하여 미들웨어를 적용할 라우트를 지정할 수 있으며, 문자열, 여러 문자열, 라우트 정보 객체, 컨트롤러 클래스 등을 인자로 받을 수 있습니다. 🎯
exclude() 메서드를 사용하여 특정 라우트를 미들웨어 적용 대상에서 제외할 수 있으며, 인자 사용 방법은 forRoutes()와 동일합니다. 🚫
- 함수형 미들웨어는 의존성이 없고 간단한 구조에 적합하며, 별도의 데코레이터 없이 함수 형태로 구현할 수 있습니다. 💡
- 여러 개의 미들웨어를 적용할 때는
apply() 메서드 내에서 쉼표로 구분하여 등록할 수 있습니다. ➕
- 전역 미들웨어는
main.ts 파일에서 app.use()를 사용하여 등록하거나, 모듈에서 와일드카드 라우트를 사용하여 등록할 수 있습니다. 🌍