[Nest JS λ‘ CRUD κ²μν λ§λ€κΈ°] (10) NestJS PIPE & κ²μλ¬Ό μμ± μ μ ν¨μ± 체ν¬νκΈ°
<λ³Έ λΈλ‘κ·Έλ John Ahn μ μ νλΈλ₯Ό μ°Έκ³ ν΄μ 곡λΆνλ©° μμ±νμμ΅λλ€ :-)>
=> λ°λΌνλ©΄μ λ°°μ°λ NestJS
π§Έ NestJS PIPE
: νμ΄νλ @Injectable () λ°μ½λ μ΄ν°λ‘ μ£Όμμ΄ λ¬λ¦° ν΄λμ€
: data transformation κ³Ό data validation μ μν΄μ μ¬μ©λ¨
: 컨νΈλ‘€λ¬ κ²½λ‘ μ²λ¦¬κΈ°μ μν΄ μ²λ¦¬λλ μΈμμ λν΄ μλν¨
: Nest λ λ©μλκ° νΈμΆλκΈ° μ§μ μ νμ΄νλ₯Ό μ½μ νκ³ νμ΄νλ λ©μλλ‘ ν₯νλ μΈμλ₯Ό μμ νκ³ μ΄μ λν΄ μλν¨
π data transformation
: μ λ ₯ λ°μ΄ν°λ₯Ό μνλ νμμΌλ‘ λ³ν
π data validation
: μ λ ₯ λ°μ΄ν°λ₯Ό νκ°νκ³ μ μν κ²½μ° λ³κ²½λμ§ μμ μνλ‘ μ λ¬ (κ·Έλ μ§ μμΌλ©΄ μλ¬ μ²λ¦¬)
λΌμ°ν° νΈλ€λ¬ (Router Handler) κ° μ²λ¦¬νλ μΈμμ λν΄ μλν¨
νμ΄νλ λ©μλλ₯Ό λ°λ‘ μ§μ μ μλν΄μ λ©μλλ‘ ν₯νλ μΈμμ λν΄ λ³νν κ²μ΄ μμΌλ©΄ λ³ν
μ ν¨μ± μ²΄ν¬ μν΄μλ νΈμΆλ¨
π PIPE μ¬μ©νλ λ°©λ²
1) Handler-level Pipes
: @UsePipes() λ°μ½λ μ΄ν°λ₯Ό μ΄μ©ν΄μ μ¬μ© ν¨
: λͺ¨λ νλΌλ―Έν°μ μ μ©λ¨
2) Parameter-level Pipes
: νΉμ ν νλΌλ―Έν°μκ²λ§ μ μ©μ΄ λ¨
3) Global-level Pipes
: ν΄λΌμ΄μΈνΈμμ λ€μ΄μ€λ λͺ¨λ μμ²μ μ μ©μ΄ λ¨
: μ ν리μΌμ΄μ λ 벨μ νμ΄ν
: κ°μ₯ μλ¨ μμμΈ main.ts μ λ£κΈ°
4) Built-in Pipes
- ValidationPipe
- ParseIntPipe
- ParseBoolPipe
- ParseArraryPipe
- ParseUUIDPipe
- DefaultValuePipe
π§Έ κ²μλ¬Ό μμ± μ μ ν¨μ± 체ν¬νκΈ°
npm install class-validator class-transformer --save
π src/boards/dto/create-board.dto.ts
import { IsNotEmpty } from "class-validator";
export class CreateBoardDto {
@IsNotEmpty()
title: string;
@IsNotEmpty()
description: string;
}