Skip to content

Cell - 校验组件 ​

将 @celljs/validation 添加到依赖项以检查请求数据:类型为类的控制器或 RPC 参数会变成它的实例(class-transformer)并用其 class-validator 装饰器验证。失败时返回 400 和 JSON 格式的错误。

ts
import { IsInt, IsString, Min } from 'class-validator';

export class CreateUser {
    @IsString()
    name: string;

    @IsInt()
    @Min(0)
    age: number;
}

@Controller('users')
export class UserController {
    @Post()
    create(@Body() user: CreateUser) { ... }
}

没有这个包时 @celljs/web 把这样的参数作为原始请求数据传递,仍然转换 String、Number、Boolean 和 Date 参数(TypeConversionPipe)。

yaml
validation:
  detailedOutputDisabled: false   # true:返回 400,不带错误
  transformEnabled: true          # false:把请求数据而非实例传给方法
  transformOptions: {}            # plainToInstance 的选项
  validatorOptions: {}            # validate 的选项,例如 whitelist: true