intermediate

NestJS pipes

Используйте pipes для transformation и validation на boundary, включая DTO validation, coercion и predictable error output.

Pipes трансформируют или валидируют input до handler. `ValidationPipe` с class-validator DTO — стандарт boundary для HTTP bodies и query params.

					export class CreateUserDto {
  @IsEmail()
  email: string;

  @IsInt()
  @Min(18)
  age: number;
}

@Post()
create(@Body(new ValidationPipe({ whitelist: true })) dto: CreateUserDto) {
  return this.users.create(dto);
}
				

Встроенные pipes: `ParseIntPipe`, `ParseUUIDPipe`, `DefaultValuePipe`. Global `ValidationPipe` в `main.ts` с `whitelist` и `forbidNonWhitelisted`. При сбое — `BadRequestException`; filters формируют response.

На интервью: pipes vs ручная validation, `transform: true` для coercion, DTO classes vs plain interfaces at runtime.

Типовые ошибки: interfaces без runtime metadata, нет whitelist — mass assignment, validation только body, не params.

Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.

Чеклист:

  • ValidationPipe + class-validator DTOs.
  • whitelist и запрет unknown properties.
  • Parse* pipes на route и query params.
  • Global ValidationPipe для единообразия.