class-validator и class-transformer
class-validator и class-transformer используются вместе для валидации и преобразования входящих данных (например, тела запроса, параметров) в удобные для работы объекты DTO (Data Transfer Object). Этот подход обеспечивает безопасность и целостность данных на уровне контроллера.
class-validator
- Основная задача: Проверка данных (валидация). Декораторы накладывают правила на поля DTO.
- Пример: @IsString(), @IsNumber(), @IsEmail(), @MinLength(8)
class-transformer
- Основная задача: Преобразование данных. Превращает сырые данные из запроса в экземпляр класса DTO. Также преобразует типы (строку в число, массив строк в массив объектов и т.д.).
- Пример: @Type(() => Number), @Transform(({ value }) => value.trim())
ValidationPipe
- Основная задача: Связующее звено. Активирует работу обеих библиотек. Используется глобально или на уровне контроллера.
- Пример: app.useGlobalPipes(new ValidationPipe({ transform: true }))
1234567891011121314import { IsString, IsEmail, IsInt, Min, Length } from 'class-validator';import { Type, Transform } from 'class-transformer';export class CreateUserDto {@IsString()@Length(2, 30)@Transform(({ value }) => value.trim()) // Убираем пробелы в начале и концеname: string;@IsEmail()@Min(18)@Type(() => Number) // Явно преобразуем строку из запроса в числоage: number;}