2024.03.14 TIL - Nestjs_Pipe

김민석·2024년 3월 14일
0

TIL

목록 보기
51/78

Pipe란?

파이프는 @Injectable () 데코레이터로 주석이 달린 클래스입니다.
파이프는 data transformation과 data validation을 위해서 사용 됩니다. 파이프는 컨트롤러 경로 처리기에 의해 처리되는 인수에 대해 작동합니다.
Nest는 메소드가 호출되기 직전에 파이프를 삽입하고 파이프는 메소드로 향하는 인수를 수신하고 이에 대해 작동합니다.

Data Transformation?

입력 데이터를 원하는 형식으로 변환 (예 : 문자열에서 정수로)
만약 숫자를 받길 원하는데 문자열 형식으로 온다면 파이프에서 자동으로 숫자로 바
꿔줍니다.

Data validation?

입력 데이터를 평가하고 유효한 경우 변경되지 않은 상태로 전달하면됩니다. 그렇지 않으면 데이터가 올바르지 않을 때 예외를 발생시킵니다.
만약 이름의 길이가 10자 이하여야 하는데 10자 이상 되면 에러를 발생시킵니다.

파이프는 위에 두가지 모든 경우에서

라우트 핸들러(Route Handler)가 처리하는 인수에 대해서 작동합니다.
그리고 파이프는 메소드를 바로 직전에 작동해서 메소드로 향하는 인수에 대해서 변환할 것이 있느면 변환하고 유효성 체크를 위해서도 호출됩니다.

PIPE 사용하는 법

파이프를 사용하는 방법(Binding pipes)은 세가지로 나눠질수 있습니다. Handler-level Pipes ,Parameter-level Pipes, Global-level Pipes 입니다
이름에서 말하는 것 그대로 핸들러 레벨, 파라미터 레벨, 글로벌 레벨로 파이프 사용 할 수 있습니다.

1. Handler-level Pipes

핸들러 레벨에서 @UsePipes() 데코레이터를 이용해서 사용 할 수 있습니다. 이 파이프는 모든 파라미터에 적용이 됩니다. (title, description)

2. Parameter-level Pipes

파라미터 레벨의 파이프 이기에
특정한 파라미터에게만 적용이 되는 파이프 입니다.
아래와 같은 경우에는 title만 파라미터 파이브가 적용이 됩니다.

3. Global Pipes

글로벌 파이프로서 애플리케이션 레벨의 파이브 입니다. 클라이언트에서 들어오는 모든 요청에 적용이 됩니다. 가장 상단 영역인 main.ts에 넣어주시면 됩니다.


Nest JS 에 기본적으로 사용할 수 있게 만들어 놓은 6가지의 파이프가 있습니다!

  • ValidationPipe
  • ParseIntPipe
  • ParseBoolPipe
  • ParseArrayPipe
  • ParseUUIDPipe - DefaultValuePipe
profile
화이팅 화이팅

0개의 댓글