인터셉터
인터셉터는 @Injectable() 데코레이터로 주석이 달린 클래스이다
인터셉터는 NestInterceptor 인터페이스를 구현해야한다
인터셉터에는 AOP기술에서 영감을 받은 유용한 기능 세트가있는데
여기서 AOP는 aspect-oriented programming 관점지향 프로그래밍이다
모듈성을 증가 시키는 것이 목적인 프로그래밍 패러다임이다
그림으로 설명을하자면
핵심기능이 4개있다고 치자
기둥 하나하나가 모듈안에 있는 컨트롤러라고 생각해보자
예를들어 users controller,catch controller ,blog controller ,money controller
이렇게 쭉 실행된다고 하면 그 코드들에서 재사용이되는 공통적인 기능들이 있을텐데
가장 적합한 예가 바로 '로깅'이라는 기능이 될수 있다. 이전에 미들웨어를 가지고 로깅을 구현했었는데
인터셉터를 가지고도 로깅을 구현할 수 있다.
인터셉터는 각각에 있는 핵심기능들을 횡단하면서 재사용성이 강한 기능들을 관점지향으로 하나의 모듈로 묶는것을 말한다
리퀘스트의 주명주기를 한번 보겠다
1. Incoming request
2. Globally bound middleware
3. Module bound middleware
4. Global guards
5. Controlelr guards
6. Route guards
7. Global interceptors (pre-controller)
8. Controller interceptors (pre-controller)
9. Route interceptors (pre-controller)
10. Global pipes
11. Controller pipes
12. Route pipes
13. Route parameter pipes
14. Controller (method handler)
15. Service (if exists)
16. Rout interceptor (post-request)
17. Controller interceptor (post-request)
18.Global interceptor (post-request)
19. Exception filters (route, then controller, then global)
20. Server response
순서를 보면 인터셉터는 두개가 있다 pre랑 post
컨트롤러가 시작되기전과 후
'웹 개발 > 🟩 Node.js' 카테고리의 다른 글
NestJS | Exception filter & Pipes (1) | 2024.02.28 |
---|---|
NestJS | 미들웨어 (0) | 2024.02.21 |
NestJS | Modules & 캡슐화 (0) | 2024.02.14 |
NestJS | Providers & 의존성 주입(DI) (0) | 2024.02.13 |
NestJS | 구조 & Controller 패턴 (0) | 2024.02.13 |