Sobes.tech
Назад к вопросам
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 помогают централизованно и удобно обрабатывать и проверять входящие данные.