정리

Middleware

  • 역할: 요청이 컨트롤러에 도달하기 전에 요청을 검증하고 승인하거나 로그 기록, 캐싱과 같은 작업을 수행하는 데 사용됩니다.
  • 사용 시점: 요청이 들어올 때 가장 먼저 실행됩니다.
  • 예시: 로깅, 인증, 요청 본문 파싱 등.
  • 구현 방법?: NestMiddleware 인터페이스를 구현합니다.
  • 장점: 코드 재사용성을 높이고, 여러 컨트롤러 및 라우트에 공통적으로 적용할 수 있는 로직을 구현하는 데 유용합니다.
  • 예시: 인증, 권한 부여, CORS 처리, 요청 로깅 등
  • 장점: 코드 재사용성을 높이고, 여러 컨트롤러 및 라우트에 공통적으로 적용할 수 있는 로직을 구현하는 데 유용합니다.

Guard

  • 역할 : 인증 및 권한 부여와 같은 보안 관련 작업에 사용됩니다. 특정 조건(예: 사용자 로그인 여부, 권한 확인)이 충족되는 경우에만 요청이 다음 단계로 진행되도록 합니다. 
  • 사용시점 : middleware 가 실행된 후에 실행
  • 구현방법? : CanAtive 인터페이스를 구현
  • 예시 : JWT 인증, RBAC(Role-Based Access Control) 구현, 특정 사용자만 특정 리소스에 액세스하도록 제한 (권한 검사)
  • 장점: 보안을 강화하고 민감한 데이터에 대한 부적절한 액세스를 방지하는 데 도움이 됩니다.

Interceptor

  • 역할: 요청 처리 전후에 추가 로직을 바인딩하거나, 반환된 결과나 발생한 예외를 수정할 수 있습니다.
    • 요청을 처리하기 전후로 추가적인 로직을 실행할 수 있도록 하며, 응답 변환, 추가 로깅, 에러 캐칭 등의 기능을 수행할 수 있습니다
    • 요청 및 응답 데이터를 변환하고, 로깅을 수행하거나, 성능을 향상시키는 작업을 수행하는 데 사용됩니다.
  • 사용 시점: Guard 다음에 실행됩니다.
  • 예시: 로깅, 캐싱, 응답 데이터 변환.
  • 구현 방법: NestInterceptor 인터페이스를 구현합니다.
  • 예시 : 로깅 캐싱, 응답 데이터 변환, 응답 시간 측정, 응답 헤더 추가, 응답 데이터 포맷 변환, 로깅
  • 장점 : 코드를 모듈화하고 재사용 가능하게 하며, 비즈니스 로직을 컨트롤러 코드와 분리하는 데 도움이 됩니다.

Pipe

  • 역할: 입력 데이터를 변환하거나 유효성을 검사합니다.
  • 사용 시점: Interceptor 다음에 실행됩니다.
  • 예시: 데이터 변환, 유효성 검사, 문자열 정리, 숫자 변환, 날짜 형식 변환, 데이터 유효성 검사
  • 구현 방법: PipeTransform 인터페이스를 구현합니다.
  • 장점 :코드 오류를 줄이고 데이터 무결성을 보장하는 데 도움이 됩니다.

Filter

  • 역할: 발생한 예외를 처리하고, 사용자에게 적절한 응답을 반환합니다.
  • 사용 시점: 컨트롤러나 서비스에서 예외가 발생했을 때 실행됩니다.
  • 예시: 예외 로깅, 사용자 친화적인 에러 메시지 반환, HTTP 오류 처리, 사용자 정의 오류 메시지 제공, 로깅
  • 구현 방법: ExceptionFilter 인터페이스를 구현합니다.
  • 장점: 애플리케이션의 안정성을 유지하고 예상치 못한 오류로 인해 사용자가 불편을 겪는 것을 방지하는 데 도움이 됩니다.

+ Recent posts