NESTJS 파이프라인?

손승우·2022년 3월 11일
0

파이프란 무엇인가?

@Injectable()데코레이터로 주석이 달린 클래스이다.

또한, 파이프는 컨트롤러 경로 처리기에 의해 처리되는 인수에 대해서 작동하는데 data transformation과 data validation를 위해서 사용된다.

URL 요청이 왔을 때, 먼저 해당 URL에 대한 데이터들을 처리해주는 것이다. 만약 문제가 생기면 통과하지 못하고 Error 처리되며, 통과한다면 데이터를 처리해준 채로 handler에게 가게 된다.

  • Data Transformation
    입력 데이터를 원하는 형식으로 변환하는 것을 말한다. 가령 문자열에서 정수로 바꾸는 것을 의미한다.

  • Data Validation
    유효성 체크로서, 입력 데이터를 평가하고 유효한 경우 변경되지 않은 상태로 전달된다. 그렇지 않으면 데이터가 올바르지 않을 때 예외를 발생시킨다.

만약 이름의 길이가 10자 이하여야 하는데 10자 이상이 되면 에러를 발생시킨다.

Built-in pipes

Nestjs의 pipe는 빌트인과, 커스텀이 있는데, 우리가 직접 만드는 파이프가 커스텀 파이프이고 미리 만들어진 것이 빌트인 파이프이다.

  • Built-in pipes은 다음과 같다.
  • ValidationPipe
  • ParseIntPipe
  • ParseFloatPipe
  • ParseBoolPipe
  • ParseArrayPipe
  • ParseUUIDPipe
  • ParseEnumPipe
  • DefaultValuePipe

하나만 보자면, ParseIntPipe를 사용해보면

findOne(@Param('id', ParseIntPipe) id : number){
    return;
}

다음의 예제에서 localhost:3000/boards/abc와 같이 id를 abc와 같은 값으로 보내면 파이프에서 먼저 처리하여number 타입이 아니기 때문에 에러를 발생시킨다.

Custom Decorator
ex)

import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const AuthToken = createParamDecorator(
  (data: string, ctx: ExecutionContext) => {
    const request = ctx.switchToHttp().getRequest();
    const { headers } = request;
    console.log(headers);
    return headers['auth_token'] ? headers['auth_token'] : '"NOT DEFINED"';
  }
)

참조링크: https://velog.io/@chappi/Nestjs%EB%A5%BC-%EB%B0%B0%EC%9B%8C%EB%B3%B4%EC%9E%90-6%EC%9D%BC%EC%B0%A8-Pipe-%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC-John-ahn%EB%8B%98-%EA%B0%95%EC%9D%98#3-pipe%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9C%A0%ED%9A%A8%EC%84%B1-%EC%B2%B4%ED%81%AC
참조링크: https://medium.com/crocusenergy/nestjs-%EA%B7%B8-%EC%99%B8-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90%EB%93%A4-39cac4bb49e

profile
개구리

0개의 댓글