nest js

NestJs custom pipe 에 대해 알아보자

호리둥절 2023. 4. 6. 17:18

사용자 정의 Pipe

사용자 정의 파이프는 다양한 용도로 사용될 수 있습니다. 예를들어, 입력 데이터의 유효성검사, 데이터 변환, 비즈니스 로직 처리 등이 가능합니다. 이에 따라 파이프 로직도 다양하게 작성될수도 있습니다.

사용자 정의 파이프를 만드려면 PipeTransform 인터페이스를 구현하는 클래스를 작성해야합니다. PipeTransform 인터페이스는 transform() 메소드를 정의합니다. 이 메소드는 파이프가 변환하거나 검증할 값을 입력으로 받고 변환된 값을 반환합니다.

 

 

아래는 예시코드입니다.

직접구현하여도 되지만 cli를 통해 간단하게 파이프를 생성합니다.

nest g pi my
import { ArgumentMetadata, Injectable, PipeTransform } from '@nestjs/common';

@Injectable()
export class MyPipe implements PipeTransform {
  transform(value: any, metadata: ArgumentMetadata) {
    console.log(value)
    return value;
  }
}

위에 코드에서 MyPipe 클래스는 PipeTransform 인터페이스를 구현합니다. transform() 메소드에서 변환 또는 검증 로직을 작성합니다. 

 

 

사용자 정의 파이프를 사용하기위해서 라우트 핸들러에 바인딩해야합니다. 예시코드입니다.

 @Get(':id')
  findOne(@Param('id', MyPipe) id: string) {
    return this.userService.findOne(+id);
  }

 

@Param('id', MyPipe) 데코레이터를 사용하여 id 파라미터에 MyPipe 파이프를 바인딩합니다. 이렇게 하면 id 파라미터가 MyPipe 파이프를 통과하여 라우트 핸들러에 전달된다. 그리고 파라미터로 받아온 id값이 console에 찍힙니다.

만약 @body()에 적용했다면 body에 모든값들이 value로 들어왔을것입니다.

 

 

 

 

'nest js' 카테고리의 다른 글

NestJs Guard에 대해 알아보자  (0) 2023.04.07
NestJs Custom decorator에 대해 알아보자  (0) 2023.04.07
NestJs Pipe에 대하여 알아보자  (0) 2023.04.06
NestJs 미들웨어  (0) 2023.04.06
NestJs Provider(공급자)  (0) 2023.04.06