반응형
클라이언트가 서버로 전송하는 데이터의 유효성검사를 Nest에서는 효율적으로 할 수 있게 Pipe라는 기능을 제공한다.
특히 ValidationPIpe는 DTO를 활용하여 자동으로 유효성 검사를 수행한다.
@UsePipes
@UsePipes는 Nest 데코레이터로 특정 메서드나 클래스에 파피프를 적용하기 위해 사용된다.
파이프는 데이터를 변환하거나 유효성을 검사하는데 사용하는데, Request가 컨트롤러에 도달하기 전에 실행된다.
@ValidationPipe
ValidationPipe는 DTO를 기반으로 유효성 검사를 수행한다.
- 자동 유효성 검사: DTO에 정의된 조건을 기준으로 데이터 검증
- 자동 예외처리: 데이터가 유효하지 않을 경우 400 반환
- 데이터 정제: 불필요한 필드를 제거하고 DTO에 정의된 필드만 남긴다.
예시
baords.controller.ts
import {
Body,
Controller,
Get,
Param,
Post,
UsePipes,
ValidationPipe,
} from '@nestjs/common';
import { Board } from 'src/boards/board.entity';
import { BoardsService } from 'src/boards/boards.service';
import { CreateBoardDto } from 'src/boards/dto/create-board.dto';
@Controller('boards')
export class BoardsController {
constructor(private boardsService: BoardsService) {}
...
@Post()
@UsePipes(ValidationPipe)
createBoard(@Body() createBoardDto: CreateBoardDto): Promise<Board> {
return this.boardsService.createBoard(createBoardDto);
}
}
create-board.dto.ts
import { IsNotEmpty } from 'class-validator';
export class CreateBoardDto {
@IsNotEmpty()
title: string;
@IsNotEmpty()
description: string;
}
createBoard 메서드에 ValidationPipe를 적용하여 클라이언트가 보낸 데이터(@Body)를 CreateBoardDto와 비교하여 검증한다.
description을 빼고 POST를 쏘면 자동으로 에러메시지까지 반환해준다.
반응형
'개발 > Nest' 카테고리의 다른 글
리포지토리 패턴 (0) | 2024.11.16 |
---|---|
Nest 공식문서에서 dto 생성시 interface보다 class를 권장하는 이유 (0) | 2024.11.14 |
Nest로 SSR하기 (+MVC) (0) | 2022.06.24 |
Nest 컨트롤러 (0) | 2022.06.19 |
nest와 친해지기 (0) | 2022.06.18 |