정리
Middleware
- 역할: 요청이 컨트롤러에 도달하기 전에 요청을 검증하고 승인하거나 로그 기록, 캐싱과 같은 작업을 수행하는 데 사용됩니다.
- 사용 시점: 요청이 들어올 때 가장 먼저 실행됩니다.
- 예시: 로깅, 인증, 요청 본문 파싱 등.
- 구현 방법?: NestMiddleware 인터페이스를 구현합니다.
- 장점: 코드 재사용성을 높이고, 여러 컨트롤러 및 라우트에 공통적으로 적용할 수 있는 로직을 구현하는 데 유용합니다.
- 예시: 인증, 권한 부여, CORS 처리, 요청 로깅 등
- 장점: 코드 재사용성을 높이고, 여러 컨트롤러 및 라우트에 공통적으로 적용할 수 있는 로직을 구현하는 데 유용합니다.
Guard
- 역할 : 인증 및 권한 부여와 같은 보안 관련 작업에 사용됩니다. 특정 조건(예: 사용자 로그인 여부, 권한 확인)이 충족되는 경우에만 요청이 다음 단계로 진행되도록 합니다.
- 사용시점 : middleware 가 실행된 후에 실행
- 구현방법? : CanAtive 인터페이스를 구현
- 예시 : JWT 인증, RBAC(Role-Based Access Control) 구현, 특정 사용자만 특정 리소스에 액세스하도록 제한 (권한 검사)
- 장점: 보안을 강화하고 민감한 데이터에 대한 부적절한 액세스를 방지하는 데 도움이 됩니다.
Interceptor
- 역할: 요청 처리 전후에 추가 로직을 바인딩하거나, 반환된 결과나 발생한 예외를 수정할 수 있습니다.
- 요청을 처리하기 전후로 추가적인 로직을 실행할 수 있도록 하며, 응답 변환, 추가 로깅, 에러 캐칭 등의 기능을 수행할 수 있습니다
- 요청 및 응답 데이터를 변환하고, 로깅을 수행하거나, 성능을 향상시키는 작업을 수행하는 데 사용됩니다.
- 사용 시점: Guard 다음에 실행됩니다.
- 예시: 로깅, 캐싱, 응답 데이터 변환.
- 구현 방법: NestInterceptor 인터페이스를 구현합니다.
- 예시 : 로깅 캐싱, 응답 데이터 변환, 응답 시간 측정, 응답 헤더 추가, 응답 데이터 포맷 변환, 로깅
- 장점 : 코드를 모듈화하고 재사용 가능하게 하며, 비즈니스 로직을 컨트롤러 코드와 분리하는 데 도움이 됩니다.
Pipe
- 역할: 입력 데이터를 변환하거나 유효성을 검사합니다.
- 사용 시점: Interceptor 다음에 실행됩니다.
- 예시: 데이터 변환, 유효성 검사, 문자열 정리, 숫자 변환, 날짜 형식 변환, 데이터 유효성 검사
- 구현 방법: PipeTransform 인터페이스를 구현합니다.
- 장점 :코드 오류를 줄이고 데이터 무결성을 보장하는 데 도움이 됩니다.
Filter
- 역할: 발생한 예외를 처리하고, 사용자에게 적절한 응답을 반환합니다.
- 사용 시점: 컨트롤러나 서비스에서 예외가 발생했을 때 실행됩니다.
- 예시: 예외 로깅, 사용자 친화적인 에러 메시지 반환, HTTP 오류 처리, 사용자 정의 오류 메시지 제공, 로깅
- 구현 방법: ExceptionFilter 인터페이스를 구현합니다.
- 장점: 애플리케이션의 안정성을 유지하고 예상치 못한 오류로 인해 사용자가 불편을 겪는 것을 방지하는 데 도움이 됩니다.
'프로그래밍 > Nest.js' 카테고리의 다른 글
[ Nest.js ] update vs createQueryBuilder vs query : 다량의 데이터 업데이트 속도 비교 (0) | 2024.07.22 |
---|---|
[ Nest.js ] insert vs save : 둘 이상의 데이터 저장시 속도비교 (1) | 2024.07.22 |
[ Nest.js ] Lock 을 이용한 데이터 중복 저장 방지 구현 (0) | 2024.07.18 |
[ Nest.js ] cross-validator 의 데코레이터가 적용이 안되는 경우 (0) | 2024.07.14 |
[ Nest.js ] [ TypeORM ] bulk insert (0) | 2024.07.06 |