管道
Nest 在路由处理器之前调用管道,然后管道接收发往路由处理器的参数
验证输入数据,给输入数据添加字段
管道有两个典型的用例:
验证:评估输入数据,如果有效,则将其原样传递;否则,当数据不正确时抛出一个异常。
转型:把输入数据转换为所需的格式(例如,从字符串到整型)。
设置全局 ValidationPipe
要执行输入验证,用 NestJS 内置的 ValidationPipe。ValidationPipe 提供了一个方便的方法来为所有传入客户端的有效负载强制验证规则,这些验证规则是用来自 class-calidator 的装饰器定义的。
安装对应包
npm install class-validator class-transformer
在main.ts中使用
import { ValidationPipe } from '@nestjs/common';
app.useGlobalPipes(new ValidationPipe({whitelist: true}));
whitelist: 去掉多余的值
在dto中增加规则
// src/articles/dto/create-article.dto.ts
import { ApiProperty } from '@nestjs/swagger';
import {
IsBoolean,
IsNotEmpty,
IsOptional,
IsString,
MaxLength,
MinLength,
} from 'class-validator';
export class CreateArticleDto {
@IsString()
@IsNotEmpty()
@MinLength(5)
@ApiProperty()
title: string;
@IsString()
@IsOptional()
@IsNotEmpty()
@MaxLength(300)
@ApiProperty({ required: false })
description?: string;
@IsString()
@IsNotEmpty()
@ApiProperty()
body: string;
@IsBoolean()
@IsOptional()
@ApiProperty({ required: false, default: false })
published?: boolean = false;
}