nestjs 생명주기와 설명

이승준·2024년 2월 8일
0

NestJS 의 생명주기

Middleware

  • Middleware 는 라우트 핸들러가 클라이언트 요청을 처리하기 전에 수행하는 컴포넌트이다.

  • 로깅, 에러핸들링, 인증/인가 등 어떤 형태로든 사용 가능하다.

  • NestJS에서는 인증/인가는 가드, 에러핸들링은 exception filter를 권장한다.

  • 이 외에도 DB 트랜잭션으로도 사용가능하다

참고 : ASSU blog - Middleware

Guard

  • middleware와 비슷한 역할을 하지만 guard는 실행콘텍스트 내부 객체의 접근할 수 있으므로 다음 핸들러가 하는 역할을 알고 있다.
  • 따라서 인증은 미들웨어, 인가는 가드를 통해서 하는 것이 효율적이다.

참고 : DaleSeo - Guard

Interceptor

  • Interceptor 는 요청과 응답을 가로채서 변경을 가할 수 있는 컴포넌트
  • 할 수 있는 기능
    • 메서드 실행 전/후 추가 로직 바인딩
    • 함수에서 반환된 결과 변환
    • 함수에서 던져진 예외 변환
    • 특정 조건에 따라 기능 재정의 (예: 캐싱)
  • 로깅이나 데이터변환 시 유리할 것 같다

참고 : ASSU blog - interceptor

Pipes

  • Pipe 는 요청이 라우터 핸들러로 전달되기 전에 요청 객체를 변환하거나 검사할 수 있도록 한다.
  • 보통 변환이나 검증 목적으로 사용한다.
  • middleware는 context를 알지 못하므로 사용하기 어렵다.
  • class-validator, class-transformer 설치 후 사용
  • 라우트마다 혹은 전역적으로 설정 해 사용

참고 : ASSU blog - pipe

0개의 댓글