Wecode -기업협업 인턴 (부트캠프)/기업협업 독학, 공부

nest.js: useGuards, useInterceptors

Queen Julia 2023. 10. 31. 21:14
[ openAi와 공부 ]
 
Q: nest.js를 쓰는데 import{useGuards, useInterceptors} from '@nestjs/common' 를 설명해줘
 
 
A: 

@nestjs/common 모듈에서 가져온 useGuards 및 useInterceptors 함수는

Nest.js 애플리케이션에서 미들웨어, 가드, 인터셉터를 사용하는 데 도움을 주는 함수입니다.

이들을 사용하여 요청 처리를 커스터마이즈하고 요청과 응답 처리에 중간 과정을 추가할 수 있습니다.

  1. useGuards:
    • useGuards 함수는 라우터 핸들러(컨트롤러 메서드)에 가드(Guard)를 적용할 때 사용됩니다. 가드는 요청을 처리하기 전에 요청을 필터링하거나 수정하는 역할을 합니다. 예를 들어, 인증 관련 가드는 요청이 인증된 사용자에게만 허용되도록 필터링할 수 있습니다.
    • useGuards 함수는 하나 이상의 가드를 적용할 수 있으며 배열로 여러 가드를 적용할 수 있습니다. 가드는 클래스로 정의되며 @Injectable() 데코레이터로 주석이 달린 클래스로 작성됩니다.

[코드 예시]

import { useGuards } from '@nestjs/common';
import { AuthGuard } from './auth.guard';

@UseGuards(AuthGuard)
@Get('protected')
getProtectedData() {
  // 이 엔드포인트는 AuthGuard 가드에 의해 보호됩니다.
}

 


2. useInterceptors:

  • useInterceptors 함수는 라우터 핸들러에 인터셉터(Interceptor)를 적용할 때 사용됩니다. 인터셉터는 요청과 응답 사이의 중간 단계에서 작동하며, 요청 또는 응답을 변환하거나 보강할 수 있습니다. 인터셉터를 사용하여 로깅, 데이터 변환, 에러 처리 등을 수행할 수 있습니다.
  • useInterceptors 함수는 하나 이상의 인터셉터를 적용할 수 있으며 배열로 여러 인터셉터를 적용할 수 있습니다. 인터셉터는 클래스로 정의되며 @Injectable() 데코레이터로 주석이 달린 클래스로 작성됩니다.

[코드 예시]

import { useInterceptors } from '@nestjs/common';
import { LoggingInterceptor } from './logging.interceptor';

@UseInterceptors(LoggingInterceptor)
@Get('data')
getData() {
  // 이 엔드포인트는 LoggingInterceptor 인터셉터에 의해 처리됩니다.
}

 

 

이러한 데코레이터 함수를 사용하여 가드 및 인터셉터를 적용하면

Nest.js 애플리케이션의 라우터 핸들러에 중간 처리 과정을 추가하고 미들웨어를 구성할 수 있습니다.

 

이를 통해 요청 처리, 인증, 로깅 및 다양한 중간 처리 작업을 수행할 수 있어

애플리케이션을 보다 유연하게 구성할 수 있습니다.