Search
Duplicate

Intercepter

Created
2021/07/02 02:56
Tags
// 인터셉터는 AOP 이다.
// 라우터가 4개가 있다면,
A -> B -> C -> D
A -> C -> D
A -> E -> F -> D -> G
Z -> A -> X -> D
4개의 라우터에 공통점은 A 가 실행되고 그 이후 D 가 실행된다는 것이다.
그럼 D 를 중복 제거 할수 있지 않을까?
인터셉터는 이러한 개념이다.
컨트롤러 실행 전/후 에 특정 동작을 넣어 줄 수 있다.
예를들면 로거 미들웨어를 구현한 것을 인터셉터로 구현해도 된다.
인터셉터는 보통 컨트롤러 후 에 동작하는 것을 조작할 때 많이 쓴다.
컨트롤러에서 리턴한 데이터를 마지막으로 가공하는 찬스를 가질 수 있다.
import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common"; import { Observable } from "rxjs"; import { map } from 'rxjs/operators' export class UndefinedToNullInterceptor implements NestInterceptor { intercept(context: ExecutionContext, next: CallHandler<any>,) : Observable<any> | Promise<Observable<any>> { return next.handle().pipe(map(data => data === undefined ? null : data)); // 여기서 데이터는 controller 에서 리턴한 데이터이다. } }
Plain Text
복사