Как валидировать входящие запросы? Приведите пример с использованием class-validator.
Вопрос проверяет знание подходов к валидации запросов с использованием библиотек class-validator и class-transformer.
Короткий ответ
Валидация входящих запросов в NestJS осуществляется с помощью DTO и библиотеки class-validator. Определите правила валидации через декораторы в DTO и подключите глобально ValidationPipe.
Длинный ответ
Валидация помогает проверить корректность данных перед их обработкой. NestJS использует DTO (Data Transfer Objects) совместно с библиотеками class-validator и class-transformer.
1. Установка зависимостей:
npm install class-validator class-transformer2. Создание DTO с правилами валидации:
import { IsString, IsInt, MinLength, MaxLength } from 'class-validator';
export class CreateUserDto {
@IsString()
@MinLength(3)
@MaxLength(20)
username: string;
@IsInt()
age: number;
}3. Использование DTO в контроллере:
import { Controller, Post, Body } from '@nestjs/common';
import { CreateUserDto } from './create-user.dto';
@Controller('users')
export class UsersController {
@Post()
async create(@Body() createUserDto: CreateUserDto) {
console.log('Valid data:', createUserDto);
}
}4. Включение глобальной валидации:
В файле main.ts добавьте глобальный ValidationPipe:
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
await app.listen(3000);
}
bootstrap();
Используйте DTO и ValidationPipe для автоматической проверки корректности входящих данных. Это уменьшает вероятность ошибок и делает код более читаемым.