Усовершенствуйте свои приложения NestJS с помощью ParseInt Pipe: подробное руководство

NestJS — это популярная платформа для создания масштабируемых и удобных в обслуживании серверных приложений с помощью Node.js. Одной из ключевых особенностей NestJS являются мощные возможности проверки и преобразования, предоставляемые каналами. В этой статье мы углубимся в канал ParseInt и рассмотрим несколько методов его эффективного использования в ваших приложениях NestJS. Итак, берите чашечку кофе и начнем!

Метод 1: использование канала ParseInt в параметрах контроллера
Конвейер ParseInt можно применять непосредственно к параметрам метода контроллера. Он автоматически преобразует параметр входящего запроса в целое число, обеспечивая безопасность типов и предотвращая потенциальные ошибки, вызванные недопустимым вводом. Вот пример:

@Get(':id')
findOne(@Param('id', ParseIntPipe) id: number) {
  // Use the parsed 'id' parameter
}

Метод 2: применение канала ParseInt в DTO (объектах передачи данных)
DTO используются для проверки и преобразования полезных данных входящих запросов до того, как они достигнут методов контроллера. Применяя канал ParseInt к свойству DTO, вы можете гарантировать, что значение анализируется как целое число. Взгляните на этот фрагмент кода:

import { IsInt } from 'class-validator';
export class CreateProductDto {
  @IsInt()
  @Transform(ParseIntPipe)
  quantity: number;
}

Метод 3: использование канала ParseInt в пользовательских каналах проверки
NestJS позволяет создавать собственные каналы проверки путем расширения класса ValidationPipe. Вы можете комбинировать канал ParseInt с другими правилами проверки, чтобы создать собственный канал, соответствующий вашим конкретным требованиям. Вот пример:

import { ValidationPipe } from '@nestjs/common';
import { ParseIntPipe } from '@nestjs/common';
export class CustomValidationPipe extends ValidationPipe {
  constructor() {
    super({
      transform: true,
      transformOptions: {
        enableImplicitConversion: true,
      },
      whitelist: true,
      forbidNonWhitelisted: true,
      transform: true,
      transformOptions: {
        enableImplicitConversion: true,
      },
      transform: true,
      transformOptions: {
        enableImplicitConversion: true,
      },
      transform: true,
      transformOptions: {
        enableImplicitConversion: true,
      },
    });
  }
  transform(value: any, metadata: ArgumentMetadata) {
    const transformedValue = super.transform(value, metadata);
    if (metadata.type === 'param' && metadata.data === 'id') {
      return parseInt(transformedValue, 10);
    }
    return transformedValue;
  }
}

В этой статье мы рассмотрели различные методы использования канала ParseInt в приложениях NestJS. Мы научились применять канал непосредственно к параметрам контроллера, использовать его в DTO для проверки и преобразования и даже создавать собственные каналы проверки с помощью канала ParseInt. Используя эти методы, вы можете повысить надежность своих приложений NestJS.