Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Pipe (труба) в NestJS — это специализированный компонент архитектуры, отвечающий за валидацию и трансформацию входящих данных. Это один из ключевых элементов так называемого "request processing pipeline" NestJS.
Основные задачи Pipe
- Валидация — проверка соответствия данных ожидаемому формату
- Трансформация — преобразование данных в требуемый тип
- Обработка ошибок — корректное возвращение ошибок валидации
Встроенные Pipes
NestJS предоставляет готовые pipes для частых сценариев:
- ValidationPipe — валидирует данные на основе class-validator декораторов
- ParseIntPipe — преобразует строку в целое число
- ParseUUIDPipe — проверяет и преобразует UUID
- DefaultValuePipe — устанавливает значение по умолчанию
- ParseBoolPipe — преобразует в boolean
Пример использования
import { Controller, Post, Body, UsePipes } from '@nestjs/common';
import { ValidationPipe } from '@nestjs/common';
import { CreateUserDto } from './create-user.dto';
@Controller('users')
export class UsersController {
@Post()
@UsePipes(new ValidationPipe())
create(@Body() createUserDto: CreateUserDto) {
return createUserDto;
}
}
Создание собственного Pipe
import { Injectable, PipeTransform, BadRequestException } from '@nestjs/common';
@Injectable()
export class ParseIntPipe implements PipeTransform<string, number> {
transform(value: string, metadata: ArgumentMetadata): number {
const val = parseInt(value, 10);
if (isNaN(val)) {
throw new BadRequestException('Validation failed');
}
return val;
}
}
Применение Pipes
Pipes можно применять на разных уровнях:
- На параметр маршрута:
@Get(':id')
getUser(@Param('id', ParseIntPipe) id: number) {}
- На тело запроса:
@Post()
create(@Body(new ValidationPipe()) createUserDto: CreateUserDto) {}
- Глобально:
app.useGlobalPipes(new ValidationPipe());
Практическое применение
Pipes критически важны для создания надёжного API:
- Защита от некорректных данных
- Автоматическое преобразование типов
- Централизованная обработка ошибок валидации
- Переиспользуемая логика валидации
Это позволяет держать бизнес-логику в контроллерах чистой и не смешивать её с валидацией.