Назад к вопросам
Junior — Middle
85
Объясните концепцию Pipe в NestJS и их роль в обработке данных и валидации
Ответ от нейросети
sobes.tech AI
В NestJS Pipe — это класс, который реализует интерфейс PipeTransform и используется для трансформации и валидации данных, поступающих в обработчики маршрутов (контроллеры).
Основные роли Pipe:
- Валидация: проверяют, что входные данные соответствуют ожидаемым требованиям (например, типы, формат).
- Трансформация: преобразуют данные в нужный формат (например, строку в число, JSON в объект).
Pipes вызываются после получения данных из запроса и до передачи их в метод контроллера. Если Pipe обнаруживает ошибку (например, невалидные данные), он может выбросить исключение, и запрос не будет обработан дальше.
Пример простого Pipe для преобразования строки в число:
import { PipeTransform, Injectable, BadRequestException } from '@nestjs/common';
@Injectable()
export class ParseIntPipe implements PipeTransform {
transform(value: any) {
const val = parseInt(value, 10);
if (isNaN(val)) {
throw new BadRequestException('Validation failed');
}
return val;
}
}
Использование в контроллере:
@Get(':id')
getById(@Param('id', ParseIntPipe) id: number) {
// id уже число
}
Таким образом, Pipes помогают централизованно и удобно обрабатывать и проверять входящие данные.