사용자 정의 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 |