j4flmao/agent_skills_nodejs_nestjs

validating-nestjs-dtos

Validates NestJS request payloads with class-validator and class-transformer using a global ValidationPipe.

Quelltext ansehen

Verwendung

  1. Installationsbefehl kopieren und das Quellpaket vor der Installation in der eigenen Agentenumgebung prüfen.
  2. Benötigte Werkzeuge, Zugangsdaten und Hosts im Original prüfen.
  3. Eingabe und gewünschtes Ergebnis beschreiben und die Ausgabe mit den Quellen abgleichen.
npx skills add https://github.com/j4flmao/agent_skills_nodejs_nestjs --skill validating-nestjs-dtos

Vor dem Start

  • Die Installation umfasst weder Modellabo noch API-Kontingent oder Dateizugriffsrechte.
  • Sterne und Installationen zeigen Aktivität, keine unabhängige Qualitäts- oder Sicherheitsprüfung.
Originales Skill-Dokument

Aus dem Quell-Repository gerendert; Überschriften, Beispiele, Code, Tabellen, Links und Bilder bleiben erhalten.

Validating NestJS DTOs

When to use

  • Adding or refactoring DTOs
  • Hardening boundary input
  • Removing manual validation from controllers

Core rules

  1. Global ValidationPipe with whitelist: true, forbidNonWhitelisted: true
  2. DTOs use class-validator decorators: @IsEmail(), @IsString(), @MinLength()
  3. Use @Type() from class-transformer for type conversion
  4. No manual validation in controllers
  5. DTOs in application/dtos/ folder

Reference shape (TypeScript)

DTO with class-validator

typescript
import { IsEmail, IsString, MinLength, IsEnum } from 'class-validator';
import { Type } from 'class-transformer';

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

  @IsString()
  @MinLength(12)
  password: string;

  @IsEnum(['user', 'admin'])
  role: string;
}

Global ValidationPipe

typescript
// main.ts
app.useGlobalPipes(
  new ValidationPipe({
    whitelist: true,
    forbidNonWhitelisted: true,
    transform: true,
    transformOptions: { enableImplicitConversion: true },
  })
);

Examples — Do

typescript
@Post()
async create(@Body() dto: CreateUserDto): Promise<ApiResponse<User>> {
  return toApiResponse(await this.useCase.execute(dto)); // No manual validation
}

Examples — Don't

typescript
// ❌ Manual validation in controller
@Post()
create(@Body() body: any) {
  if (!body.email) return { error: 'Email required' }; // No!
}

Checklist

  • [ ] Global ValidationPipe configured
  • [ ] DTOs with class-validator decorators
  • [ ] No manual validation in controllers
  • [ ] DTOs in application/dtos folder

See reference/dto-patterns.md for full patterns.

Verwandte Aufgaben

aus demselben Repository

Weitere Skills

Alle Skills