NestJS Pipes

김동현·2021년 11월 28일

NestJS

목록 보기
9/11

Pipe란?

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

Data transformation

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

Data validation

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

PIPE 사용(Binding Pipes)

  • 파이프를 사용하는 방법은 세가지로 나눠질 수 있다.

Handler-level Pipes

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

Parameter-level Pipes

  • 파라미터 레벨의 파이프 이기에 특정한 파라미터에게만 적용이되는 파이프이다.(title만 적용)

Global Pipes

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

Built-in Pipes

  • NestJS에 기본적으로 사용할 수 있게 만들어 놓은 6가지의 파이프가 있다.
    • ValidationPipe
    • ParseIntPipe
    • ParseBoolPipe
    • ParseArrayPipe
    • ParseUUIDPipe
    • DefaultValuePipe

ParseIntPipe

  • 원래는 파라미터 값으로 숫자가 와야하는 핸들러지만 숫자가 아닌 문자열을 보내주게 되면
profile
개발자로서의 첫걸음

0개의 댓글