SuperAPI AI 工具集

pipes

编程与开发

查看项目

更新于 10-16 07:25

技能介绍

用途:NestJS Pipes 用于在处理请求参数(body、query、param)时进行校验和转换,是路由处理器前的数据处理环节。适合校验请求数据、转换输入类型、解析原始类型、提供默认值、清洗用户输入、实现自定义校验逻辑、剔除 DTO 多余属性,以及将请求负载自动转换为类实例。\n\n主要能力:管道是带 @Injectable() 并实现 PipeTransform 接口的类;transform(value, metadata) 接收值与元数据,返回值或抛出异常,运行在异常区内。Nest 提供内置管道:ValidationPipe、ParseIntPipe、ParseFloatPipe、ParseBoolPipe、ParseArrayPipe、ParseUUIDPipe、ParseEnumPipe、DefaultValuePipe。绑定方式包括参数级(如 @Query('id', ParseIntPipe))、方法级(@UsePipes(ValidationPipe))、控制器级和全局(APP_PIPE 或 app.useGlobalPipes)。\n\n用法要点:校验 DTO 需安装 class-validator 和 class-transformer(npm install class-validator class-transformer),在 DTO 上使用装饰器描述规则,如 @IsString、@IsInt、@Min、@Max、@IsEmail、@IsOptional、@ValidateNested 等,并配合 ValidationPipe 使用。全局 ValidationPipe 常用选项:whitelist: true 剔除无装饰器属性、forbidNonWhitelisted: true 遇到非白名单属性抛错、transform: true 自动转换为 DTO 实例、transformOptions.enableImplicitConversion 自动转换原始类型。也可自定义管道实现解析、默认值、转大写或清洗逻辑,并可结合 Joi 等对象模式库做 schema 校验。\n\n限制:技能资料给出的是 NestJS 管道机制与示例代码,未提供该技能在具体项目中的安装命令、版本约束、收费或平台信息;资料中部分示例为完整代码片段,实际使用需按项目结构调整,且需自行确认依赖版本与运行环境。