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.