개발일지

Nest.js Pipe

2023. 8. 15. 01:35
목차
  1. 파이프(Pipe)
  2. 파이프의 목적
  3. 파이프의 종류
  4. ValidationPipe
  5. User-dto
  6. 요청
  7. parseIntPipe
  8. ParseBoolPipe
  9. ParseArrayPipe
  10. 요청
  11. ParseUUIDPipe
  12. DefaultValuePipe

파이프(Pipe)

  • 요청이 라우터 핸들러로 전달되기 전에 요청 객체를 변환할 수 있는 기회를 제공
  • 미들웨어의 역할과 비슷하지만 미들웨어는 애플리케이션의 모든 콘텍스트에서 사용하도록 할 수 없음 => 미들웨어는 현재 요청이 어떤 핸들러에서 수행되는지, 어떤 매개변수를 가지고 있는지에 대한 실행 콘텍스트를 알지 못함

파이프의 목적

  • 변환(trasform): 입력 데이터를 원하는 형식으로 변환, => users/user/1 의 경로 매개변수 1을 문자열에서 정수로 변환
  • 유효성 검사(validation): 입력 데이터가 사용자가 정한 기준에 유효하지 않은 경우 예외 처리를 반환함

파이프의 종류

ValidationPipe

  • 용도: 들어오는 데이터의 유효성 검사를 수행함
  @Post()
  //ValidationPipe를 통해 전달된 입력값 유효성검사
  create(@Body(ValidationPipe) createUserDto: CreateUserDto) {
    console.log(createUserDto);
    return this.usersService.create(createUserDto);
  }
  
  //{ name: 'kim', email: 'ystar5008@naver.com' }

User-dto

import { IsString, MinLength, MaxLength, IsEmail } from 'class-validator';

export class CreateUserDto {
  @IsString()
  @MinLength(1)
  @MaxLength(20)
  readonly name: string;

  @IsEmail()
  @MinLength(2)
  @MaxLength(30)
  readonly email: string;
}

요청

parseIntPipe

  • 용도: 문자열을 정수로 변환
  • ex) 매개변수로 전달된 id:1를 정수로 변환
@Get(':id')
findOne(@Param('id', new ParseIntPipe()) id: number) {
  // id는 정수로 변환된 값입니다.
  // ...
}

ParseBoolPipe

  • 용도 : 문자열을 boolean으로 변환
@Get(':isActive')
findActive(@Param('isActive', new ParseBoolPipe()) isActive: boolean) {
  // isActive는 불리언으로 변환된 값입니다.
  // ...
}

ParseArrayPipe

  • 용도: 문자열을 배열로 변환
@Get()
findMany(@Query('ids', new ParseArrayPipe({ items: Number, separator: ',' })) ids: number[]) {
 console.log(ids);
}

//[1]

요청

ParseUUIDPipe

  • 용도 : 문자열을 UUID로 변환
@Get(':uuid')
find(@Param('uuid', new ParseUUIDPipe()) uuid: string) {
  // uuid는 UUID 문자열로 변환된 값입니다.
  // ...
}

DefaultValuePipe

  • 용도 : 파라미터가 제공되지 않았을떄 기본값을 설정
@Get()
findAll(@Query('page', new DefaultValuePipe(1), ParseIntPipe) page: number) {
  // page가 제공되지 않으면 기본값으로 1이 할당됩니다.
  // ...
}

'개발일지' 카테고리의 다른 글

Nest.js 예외처리 Exception filter  (0) 2023.08.16
Nest.JS MySQL 연결  (0) 2023.08.16
Nest.js 모듈  (0) 2023.08.14
Nest.js DB연동  (0) 2023.08.13
Nest MySQL 연동  (0) 2023.07.27
  1. 파이프(Pipe)
  2. 파이프의 목적
  3. 파이프의 종류
  4. ValidationPipe
  5. User-dto
  6. 요청
  7. parseIntPipe
  8. ParseBoolPipe
  9. ParseArrayPipe
  10. 요청
  11. ParseUUIDPipe
  12. DefaultValuePipe
'개발일지' 카테고리의 다른 글
  • Nest.js 예외처리 Exception filter
  • Nest.JS MySQL 연결
  • Nest.js 모듈
  • Nest.js DB연동
index.ys
index.ys
머리속에 떠도는 코드조각들을 맞추는 공간입니다.
index.ys
코린이 개발일지
index.ys
전체
오늘
어제

공지사항

블로그 메뉴

  • 홈
  • 방명록
  • Github
  • Notion
  • Figma
  • 타닥타닥 (235)
    • 개발일지 (124)
    • html , css (0)
    • Javascript (30)
    • Node.js (8)
    • React (2)
    • 네트워크 (1)
    • DB, SQL (5)
    • AWS (11)
    • CS (21)
    • 면접 (13)
    • 사진 (4)
    • 북로그 (3)
    • 머릿속 (5)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
index.ys
Nest.js Pipe
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.