npm install --save class-validator class-transformer
파이프 라인 설정
// main.ts
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from 'app.module';
async function bootstrap() {
console.log(process.env.NODE_ENV);
const app = await NestFactory.create(AppModule, {
logger: ['log'],
});
// 글로벌 파이프 설정
app.useGlobalPipes(new ValidationPipe());
await app.listen(3000);
}
bootstrap();
dto 작성
import {
IsIn,
IsOptional,
IsString,
MinLength,
Matches,
} from 'class-validator';
import { Transform } from 'class-transformer';
export class CreateSomethingDto {
@IsString()
@IsOptional()
userId: string;
@IsString()
@Transform(({ value }) => value.trim()) // 양 옆의 공백을 자른 값을 사용한다.
@MinLength(5)
content: string;
@IsIn(['apple', 'orange', 'pineapple']) // 선택지
@IsString()
choice: string;
}
컨트롤러에 적용
@Get('/test')
@HttpCode(200)
@UsePipes(new ValidationPipe()) // global 하게 사용하고 싶지 않을 때 해당 데코레이터를 추가한다.
testEndPoint(@Request() request, @Body body: CreateSomethingDto) {
// body 타입을 위와 같이 설정해주면 자동으로 유효성 검사를 수행해 유효하지않으면 400을 반환한다.
return {
statusCode: 200
}
}
'Web Programming > NestJS' 카테고리의 다른 글
[NestJS] string을 mongo ObjectId로 변경하기 (0) | 2022.02.23 |
---|---|
[NestJS] mongoose 다른 이름으로 populate하기 (0) | 2022.02.14 |
[NestJS] 아직도 dotenv 사용함? (0) | 2022.02.03 |
[NestJS] Mongoose pre, post hook 설정 (0) | 2022.02.03 |
[NestJS] NestJS에서 MongoDB 연결하기 (0) | 2022.01.26 |