介绍
在接受请求时,为了自动验证传来的参数,可以使用 ValidationPipe, 全局定义后结合 class-validator 对传入的参数进行校验
1、安装依赖
npm i --save class-validator class-transformer
yarn add class-validator class-transformer
全局使用 useGlobalPipes
import { NestFactory } from '@nestjs/core'; | |
import { AppModule } from './app.module'; | |
//1、需要在 '@nestjs/common' 中引入 | |
import { ValidationPipe } from '@nestjs/common'; | |
async function bootstrap() { | |
const app = await NestFactory.create(AppModule); | |
app.useGlobalPipes(new ValidationPipe({ | |
whitelist:true,// 过滤 | |
forbidNonWhitelisted:false,// 报错 | |
transform:true | |
})); | |
await app.listen(9999);// 端口 可以自己配置 | |
console.log('http://localhost:9999/'); | |
} | |
bootstrap(); |
ValidationPipe 可以使用的属性有
选项 | 类型 | 描述 |
---|---|---|
enableDebugMessages | boolean | 如果设置为 true,验证器将在出现问题时向控制台打印额外的警告消息。 |
skipUndefinedProperties | boolean | 如果设置为 true,则验证器将跳过验证对象中未定义的所有属性的验证。 |
skipNullProperties | boolean | 如果设置为 true,则验证器将跳过验证对象中所有为空的属性的验证。 |
skipMissingProperties | boolean | 如果设置为 true,则验证器将跳过验证对象中所有为 null 或未定义的属性的验证 |
whitelist | boolean | 如果设置为 true,验证器将删除任何不使用任何验证装饰器的属性的已验证(返回)对象。 |
forbidNonWhitelisted | boolean | 如果设置为 true,而不是剥离非白名单属性验证器将抛出异常。 |
forbidUnknownValues | boolean | 如果设置为 true,验证未知对象的尝试会立即失败。 |
disableErrorMessages | boolean | 如果设置为 true,验证错误将不会返回给客户端。 |
errorHttpStatusCode | number | 此设置允许您指定在发生错误时将使用哪种异常类型。默认情况下它会抛出 BadRequestException. |
exceptionFactory | Function | 接受验证错误的数组并返回要抛出的异常对象。 |
groups | string[] | 在对象验证期间要使用的组。 |
always | boolean | 设置 always 装饰器选项的默认值。可以在装饰器选项中覆盖默认值 |
strictGroups | boolean | 如果 groups 未给出或为空,则忽略具有至少一组的装饰器。 |
dismissDefaultMessages | boolean | 如果设置为 true,验证将不使用默认消息。undefined 如果未明确设置,则错误消息将始终显示。 |
validationError.target | boolean | 指示目标是否应在 ValidationError. |
validationError.value | boolean | 指示是否应在 中公开经过验证的值 ValidationError。 |
stopAtFirstError | boolean | 当设置为 true 时,给定属性的验证将在遇到第一个错误后停止,默认为 false |
人之本性,如果某一天你忽然对这个世界没了欲望,你也就不会留恋人的生活了,这看上去是个悖论,可事实就是如此,我们为了欲望痛苦,又因为欲望而生存!
————《天空的城》