DTO & Validation trong NestJS
Bài 6 – Sử dụng DTO và Validation trong NestJS
Bài 6 / 8
DTO & Validation trong NestJS
DTO (Data Transfer Object) giúp chuẩn hóa dữ liệu đầu vào, còn Validation đảm bảo dữ liệu được gửi lên từ client đáp ứng đúng tiêu chuẩn trước khi xử lý. Đây là bước quan trọng để xây dựng API an toàn và ổn định.
1. Nội dung chính
- Khái niệm DTO trong NestJS.
- Sử dụng class-validator và class-transformer.
- Validation Pipe và cách bật global validation.
- Tổ chức DTO theo từng module.
- Lợi ích của việc chuẩn hóa dữ liệu đầu vào.
2. Ví dụ
// install:
// npm i class-validator class-transformer
// create-user.dto.ts
import { IsString, IsEmail, MinLength } from 'class-validator';
export class CreateUserDto {
@IsEmail()
email: string;
@IsString()
@MinLength(4)
password: string;
}
// Bật validation global – main.ts
import { ValidationPipe } from '@nestjs/common';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
await app.listen(3000);
}
bootstrap();
3. Kiến thức trọng tâm
DTO giúp tách biệt dữ liệu request khỏi logic nghiệp vụ.
Validation Pipe tự động kiểm tra dữ liệu đầu vào trước khi vào controller.
Kết hợp class-validator và class-transformer để kiểm soát dữ liệu mạnh mẽ hơn.
4. Bài tập nhanh
Tạo DTO CreateProductDto với các trường: name, price, description.
Thêm validation: name (string), price (number, min > 0), description (optional).
Áp dụng DTO vào route POST /products để kiểm tra dữ liệu trước khi tạo mới.
5. Kết luận
DTO và Validation là nền tảng quan trọng để bảo vệ API khỏi dữ liệu không hợp lệ và giữ cho hệ thống ổn định, có tổ chức và dễ mở rộng.