用户登录

Pipes,可以翻译成管道,在 Nest 框架里面, Pipe 就是转换数据用的,你给他提供一个值,它会加工处理这个值,输出最终的结果,Pipe 也可以用来做数据验证,如果数据不合规定,它可以 throw 异常。

Nest 里面有两个内置的 Pipe, ValidationPipe,还有 ParseIntPipe。

先了解一下管道可以解决的问题。打开 posts.controller, 这个控制器里的 store 方法的 post 参数的值就是请求里的主体数据, 因为这个参数用了 @Body 装饰器装饰了一下。

这个数据的类型是 CreatePostDto , 这个类型的作用就是规范一下请求里的主体数据, 打开它再检查一下, 它里面现在只有一个 title 属性,规定这个属性的类型是 string,就是字符串。

下面到客户端配置一个请求,方法是 POST,请求的地址是 posts, 请求里带着一个 JSON 格式的数据,数据里添加了一个 title 属性, 先把它的值设置成一个字符串。

发送一下这个请求, 得到了一个 403 的响应,这是因为在 store 方法里我们手工制造了一个异常,注释掉它,用一下 demoService 上的 create 方法。

回到客户客户端,重新发送一下这个请求,这次得到了一个正常的响应,状态码是 201,这回再把 title 的值设置成一个数字 ,再发送一下这个请求, 仍然得到了一个正常的响应。

我们期望的是,如果这个请求里的数据的类型不符合 CreatePostDto 里的规定的时候要报一个异常, 这种情况我们就可以通过 Pipe 来解决。

管道(Pipes)《 Nest.js 应用框架:核心部件(2) 》

统计

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

社会化网络

关于

微信订阅号

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