Как валидировать входящие запросы? Приведите пример с использованием 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-transformer

2. Создание 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 для автоматической проверки корректности входящих данных. Это уменьшает вероятность ошибок и делает код более читаемым.

Уровень

  • Рейтинг:

    2

  • Сложность:

    4

Навыки

  • Nest.js

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