Как использовать Pipes в NestJS?

Вопрос проверяет, как Pipes обрабатывают входящие данные, включая валидацию и трансформацию.

Короткий ответ

Pipes в NestJS трансформируют или валидируют входящие данные до того, как они попадают в контроллер. Их можно создавать вручную, реализуя интерфейс PipeTransform, или использовать встроенные, такие как ValidationPipe. Pipes применяются на уровне методов, контроллеров или глобально через @UsePipes.

Длинный ответ

Pipes в NestJS используются для:

- Проверки данных на соответствие заданным условиям (валидация).

- Преобразования данных из одного типа в другой (трансформация).

Ключевой метод Pipe — transform(value, metadata), где:

- value — данные из запроса.

- metadata — дополнительная информация о параметре.

 

Пример: кастомный Pipe для преобразования строки в число:

import { PipeTransform, Injectable, ArgumentMetadata, 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('Входное значение должно быть числом');
    }
    return val;
  }
}

Использование в контроллере:

import { Controller, Get, Param } from '@nestjs/common';
import { ParseIntPipe } from './parse-int.pipe';

@Controller('items')
export class ItemsController {
  @Get(':id')
  getItem(@Param('id', new ParseIntPipe()) id: number) {
    return `Идентификатор: ${id}`;
  }
}

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Nest.js

Подпишись на Node.js Developer в телеграм