前面两篇文章分别介绍了class-validator和class-transformer的使用,接着聊一下如何在nestjs中使用这两个包。
Nest.js自带数据验证,自带了三个开箱即用的管道:ValidationPipe、ParseIntPipe和ParseUUIDPipe, 其中ValidationPipe 配合class-validator就可以完美的实现我们想要的效果(对参数类型进行验证,验证失败抛出异常)。
管道验证操作通常用在dto这种传输层的文件中,用作验证操作。首先我们安装两个需要的依赖包:class-transformer和class-validator。
npm install class-validator class-transformer -S
然后在xxxx.dto.ts文件中添加验证, 完善错误信息提示:
import { IsNotEmpty, IsNumber, IsString } from 'class-validator';
export class CreatePostDto {
@ApiProperty({ description: '文章标题' })
@IsNotEmpty({ message: '文章标题必填' })
readonly title: string;
@IsNotEmpty({ message: '缺少作者信息' })
@ApiProperty({ description: '作者' })
readonly author: string;
@ApiPropertyOptional({ description: '内容' })
readonly content: string;
@ApiPropertyOptional({ description: '文章封面' })
readonly cover_url: string;
@IsNumber()
@ApiProperty({ description: '文章类型' })
readonly type: number;
}
在路由中配置DTO对象:
@controller()
class etesxcontroller{
@post()
hello(@body(new testpipe()) post:CreatePostDto){}
//testpipe 入参value就是dto可以修改dto的value
}
最后我们还有一个重要的步骤, 就是在main.ts中全局注册一下管道ValidationPipe:
app.useGlobalPipes(new ValidationPipe());
ValidationPipe的处理步骤 :
当然了,这是nestjs借助了ValidationPipe使用class-validator和calss-transformer,我们也可以自定义pipe来使用这两个包。
以上便是nestjs中如何使用class-validator和class-transformer,希望对你有所帮助。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。