用户登录

Nest 里面自带了一个可以验证数据的管道,使用它需要先去安装两个包。回到终端,安装一下 class-transformer,还有 class-validator,这两个包是 ValidationPipe 需要的东西。

完成以后,打开 post.dto.ts,这里定义的这个 CreatePostDto 里面有个 title 属性,它的值的类型是 string。

在它上面我们可以使用 class-validator 里提供的一些装饰器,去设置一下要验证的规则, 这里用一个 @IsString,表示 title 这个属性应该是一个字符串。

在文件的顶部,要把需要用的 @IsString 装饰器,从 class-validator 这个包里解构出来。

然后打开 posts.controller,在 store 方法的上面,使用一个管道, 可以用一下 @UsePipes 装饰器。

要使用的管道就是内置的 ValidationPipe, 在文件顶部,确定已经把这个 UsePipes 还有 ValidationPipe 从 @nestjs/common 里面导入出来了。

再到客户端这里配置一个请求,用 POST 方法请求 posts 地址, 请求带的主体里面有个 title 属性,现在它的值是一个数字,发送一下这个请求。这回得到的响应是个异常,这个异常的处理结果是之前我们自定义了一个异常过滤器处理的。

这个过滤器我把它用在了整个应用上了,打开 main.ts,注释掉使用了这个过滤器的代码。

回到客户端,重新发送一下这个请求,这回得到的响应就是 Nest 内置的异常处理器处理之后的结果。状态码是 400, error 是 Bad Request,带着的 message 是一个数组,每个项目就是验证失败的属性, property 是属性的名字, value 是给属性的值。

constraints 里面包含的是没有通过验证的规则,这里有个 isString, 值是 title must be a string,标题必须是字符串类型的值。这个验证的规则是在 CreatePostDto 里,我们给 title 属性设置的。

内置的数据验证管道(ValidationPipe)《 Nest.js 应用框架:核心部件(2) 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点