管道
大约 1 分钟
管道
管道是用 @Injectable()
装饰器注释的类,它实现了 PipeTransform
接口

管道有两个典型的用例:
- 转型:将输入数据转换为所需的形式(例如,从字符串到整数)
- 验证:评估输入数据,如果有效,只需将其原样传递;否则抛出异常
在这两种情况下,管道都在由 控制器路由处理器 处理的 arguments
上运行。Nest 在调用方法之前插入一个管道,管道接收指定给该方法的参数并对它们进行操作。任何转换或验证操作都会在此时发生,之后会使用任何(可能)转换的参数调用路由处理程序。
Nest 附带了许多内置管道,你可以开箱即用。你还可以构建自己的自定义管道。在本章中,我们将介绍内置管道并展示如何将它们绑定到路由处理程序。然后,我们将检查几个定制的管道,以展示如何从头开始构建一个。
注意
管道在例外区域内运行。这意味着当 Pipe 抛出异常时,它由异常层处理(全局异常过滤器和应用于当前上下文的任何 异常过滤器)。综上所述,应该很清楚,当在 Pipe 中抛出异常时,随后不会执行任何控制器方法。这为你提供了一种最佳实践技术,用于在系统边界验证从外部源进入应用的数据。