Версия источника: 4880e8b4372c96001c2e052be28b68a95d31252b
Синхронизировано: 2026-11-09T11:15:07.649Z
Источник: https://github.com/sergey-from-riders/vibecoding-base/tree/4880e8b4372c96001c2e052be28b68a95d31252b

<a id="frameworks-nestjs-validation"></a>

# NestJS: ValidationPipe и DTO

## Коротко

Runtime-валидация требует классов DTO с правилами. TypeScript-интерфейс не проверяет входящий JSON.

## Плохо

```typescript
interface CreateOrder { title: string }
// Тип исчезает после компиляции.
```

## Хорошо

```typescript
class CreateOrderDto {
  @IsString()
  @MaxLength(200)
  title!: string;
}
app.useGlobalPipes(new ValidationPipe({
  whitelist: true, forbidNonWhitelisted: true
}));
```

## Почему

Клиент может отправить поля и типы, которых нет в TypeScript-описании.

## Когда применять

NestJS с class-validator/class-transformer, декораторами и DTO-классом в @Body(). Импорты IsString/MaxLength — class-validator, ValidationPipe — @nestjs/common. Guard/Policy для доступа настраивается отдельно.

## Человек

Определяет допустимые поля и контракт ошибки.

## Агент

Настраивает ValidationPipe, DTO и запросы с некорректным JSON.

## Пример применения

POST /orders принимает title длиной до 200 символов. Поле isPaid, присланное клиентом, отклоняется; оплату меняет только серверный процесс.

## Как проверить

- Число вместо title и лишнее поле получают 400.
- Авторизация проверяется отдельно от DTO.

## Источники

- [Documentation](https://docs.nestjs.com/techniques/validation)
- [Guards](https://docs.nestjs.com/guards)

Уровень: Рекомендуется. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/frameworks/platforms/rules/nestjs-validation.md)
