728x90
๋ฐ์ํ
DTO
์ค๋ช
๐ ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฐ์ฒด
๊ธฐ๋ฅ
์ ํจ์ฑ ๊ฒ์ฌ & ๋ณํ (Data Transer Object)
์์ฑ
ํด๋น ๋ชจ๋ ํด๋์ dtoํด๋ ์์ฑ → dto.ts ํ์ผ ์์ฑ
Pipe
- @Injectable()๋ฐ์ฝ๋ ์ดํฐ๋ก ์ฃผ์์ด ๋ฌ๋ฆฐ ํด๋์ค
- Data Transformation
์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ํ์์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๋งํ๋ค. ๊ฐ๋ น ๋ฌธ์์ด์์ ์ ์๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์๋ฏธํ๋ค. - Data Validation
์ ํจ์ฑ ์ฒดํฌ๋ก์, ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ํ๊ฐํ๊ณ ์ ํจํ ๊ฒฝ์ฐ ๋ณ๊ฒฝ๋์ง ์์ ์ํ๋ก ์ ๋ฌ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ ๋ ์์ธ๋ฅผ ๋ฐ์์ํจ๋ค.
validator : ์ ํจ์ฑ ๊ฒ์ฌ
transformer : ์๋ ํ์ ๋ณํ๊ธฐ
ex)string์ผ๋ก get์ ๋ฐ์๋ numberํ์ธ ํจ์์ numberํํ๋ก ๋ณํ ์ฝ์
npm i class-validator class-transformer
import { ValidationPipe } from '@nestjs/common';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(
new ValidationPipe({
// ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ชจ๋ ์์ฑ์
// ์ ํจ์ฑ์ด ๊ฒ์ฌ๋(๋ฐํ๋) ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐ
whitelist: true,
// ํ์ฉ๋์ง ์์ ์์ฑ์ ์ ๊ฑฐํ๋ ๋์ ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ๊ฐ ์์ธ๋ฅผ ๋ฐ์
forbidNonWhitelisted: true,
transform: true, // ๋ณํ
}),
); //์ฐ๊ฒฐ
await app.listen(3000);
}
bootstrap();
- class-validator์ต์
๊ตฌ์กฐ
import { IsString, IsNumber } from 'class-validator';
// ์ ํจ์ฑ ๊ฒ์ฌ
export class CreateMovieDto {
@IsString()
readonly title: string;
@IsNumber()
readonly year: number;
@IsString({ each: true })
readonly genres: string[];
}
๋ฐ์ํ
'์ธ์ด > Nest.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TypeORM - ์ ํ (0) | 2024.04.01 |
---|---|
Test Script (0) | 2024.04.01 |
Service & Entity (0) | 2024.04.01 |
Controller (0) | 2024.04.01 |
CMD ๋ช ๋ น์ด (0) | 2024.04.01 |