DevBoi

[NestJs] Pipes란? 본문

Develop/[NestJs]

[NestJs] Pipes란?

HiSmith 2023. 5. 27. 17:52
반응형

드디어 NestJS의 개념에 대한 공부이다.

NestJs에서 Injectable() 데코레이터로 달린 클래스를 의미한다.

파이프는 data transformation과 data validation을 위해서 사용된다.

파이프는 컨트롤러 경로처리기에 의해 처리되는 인수에 대해 작동된다.

 

 

파이프가 없으면 바로 핸들러로 가게된다.

근데, 만약에 파이프가 있다면? 데이터에 대한 체크와 유효성 체크를 하고 나서 핸들러로 보내게된다.

 

스프링으로 치면... AOP나 필터라고 생각하면된다.

(백엔드는 다 비슷하구나..)

 

자, 그러면 어떻게 구현을 하고 어떻게 동작하는지 한번 해보자

 

특정 메소드 별로 데코레이터를 선언해서 사용할 수 있다.

파라미터단위로 데코레이터를 선언해서 사용할 수도있다.

글로벌 레벨의 파이프도 있다.

 

그냥 그냥 모든 요청 별로 맘대로 할수있다!

하나씩 해보자.

 

NestJs에서 제공해주는 파이프도 있다. 이 제공해주는 것은 명령어로 그냥 실행하면 만들어준다.

ex. parseIntPipe 을 사용하면된다.

뭐.. nestJS에서 제공해주는 파이프들이 있다고 하니까, 해당을 이용해서 유효성 체크를 해보자

 

 

1) 파이프 생성하기

기존에 포스트 정보를 받아서, 게시물을 생성하기도 하고

아이디 기준으로 조회,삭제 등을 했다.

 

만약에 title,description에 대한 정보가 없을때도 생성되는데 이것에 대한 error처리를 한다고한다면?

npm install class-validator class-transformer --save

 

우선 관련 제공 패키지를 다운받자.

 

DTO를 아래와 같이 수정해준다.

import { IsNotEmpty } from "class-validator";

export class createBoardDto{
    @IsNotEmpty()
    title: string;
    @IsNotEmpty()
    description: string;
}

 

그 다음에 컨트롤러 메소드에서 아래와 같이 넣어준다.

   @Post('/create')
   @UsePipes(ValidationPipe)
   createBoard(@Body() createBoardDto :createBoardDto){
         this.boardService.createBoard(createBoardDto);
   }

 

이렇게 400에러가 뜨는 것을 볼 수 있다.

 

파이프는 제공해주는것들은 한번 찾아보고, 있다는 것만 알고있도록하자

(어차피 개발할떄 구글링해서 하니까)

반응형

'Develop > [NestJs]' 카테고리의 다른 글

[NestJS] 커스텀 파이프 개발  (0) 2023.05.27
[NestJs] 예외 처리  (0) 2023.05.27
[NestJS] 게시물 CRUD  (0) 2023.05.27
[NestJS] DTO 사용  (1) 2023.05.27
[NestJs] 게시판 정보 불러오기 및 게시판 마무리  (0) 2023.05.27