NestJS - Interceptors

DaeChan Jo·2024년 1월 18일
0

nest.js

목록 보기
3/3

공식 문서에 따르면 인터셉터는 @Injectable() 데코가 달린 클래스라고 한다.
하지만 서비스 레이어의 클래스에서 해당 데코를 이미 사용하고 있는데, 같은 데코를 사용하고 있지만 서로 다른 목적으로 설계되었기에 개념을 명확히 해야한다.

NestJS의 서비스클래스도 다른 프레임워크 또는 우리모두가사용하는그패턴과 비슷하게 일반적으로 비즈니스 로직, 데이터 조작 및 기타 애플리케이션별 기능들을 처리하고 해당 비즈니스 로직을 캡슐화하며 코드 모듈성을 촉진한다.

반면에 인터셉터는 어떨까.


같은 데코 다른 목적

인터셉터는 전역적으로 또는 경로별로 요청과 응답 흐름을 가로채 처리하는 데 사용할 수 있는 미들웨어와 유사한 구성 요소이다. 즉, 흐름이 컨트롤러나 서비스에 도달하기 전이나 후에 로직을 실행시킬 수 있다.


pipe 와의 차이점

NestJs에서 파이프와 인터셉터는 요청을 가로채고 처리하는 측면에서 많은 유사점을 가지고 있다. 하지만 파이프는 주로 데이터 변환 및 검증에 중점을 두고 입력 데이터가 라우트 핸들러에 도달하기 전에 변환하거나 출력 데이터가 응답으로 전송되기 전에 유효성 검사를 진행하고 변환하는데 사용한다.
보통 파이프는 경로 매개변수, 요청 본문, 쿼리 매개변수 등에 적용하는게 일반적이다.

반면에 인터셉터는 더 넓은 범위의 문제에 사용할 수 있다.
인터셉터는 전역적으로 또는 라우트별로 요청과 응답을 가로채고 처리하는 데 사용되고 로깅, 요청 응답 수정, 인증 등과 같은 작업에 적합하다.
또한 파이프와의 가장 큰 차이점으로 실행 컨텍스트에 액세스할 수 있으므로 요청 처리 수명 주기의 다양한 단계에서 작업을 수행할 수 있다.

요약하자면, 파이프와 인터셉터 사이에는 기능상 일부 중복이 있지만 서로 다른 목적으로 설계되었다. 파이프는 데이터 변환 및 검증에 특화되어 데이터의 정확성을 보장하는 반면, 인터셉터는 보다 범용적이며 요청 및 응답 처리와 관련된 더 광범위한 문제에 적용될 수 있다.

profile
BackEnd Developer

0개의 댓글