class-validator
是一个用于 TypeScript 的库,它允许你在类属性上添加验证装饰器,以便在运行时检查这些属性的有效性。这对于构建健壮的 API 和确保数据完整性非常有用。
自定义验证修饰符允许你创建自己的验证逻辑,以满足特定的业务需求。通过重写 validator
方法中的 validationOptions
,你可以进一步定制验证行为。
class-validator
与 TypeScript 紧密集成,它可以在编译时捕获许多类型错误。validator
方法中的 validationOptions
,你可以实现高度定制化的验证逻辑。class-validator
提供了多种内置验证装饰器,如 @IsString
、@IsInt
、@IsEmail
等。此外,你还可以创建自定义验证装饰器。
假设我们需要创建一个自定义验证修饰符,用于检查字符串是否包含特定子字符串:
import { registerDecorator, ValidationOptions, ValidationArguments } from 'class-validator';
export function ContainsSubstring(substring: string, validationOptions?: ValidationOptions) {
return function (object: Object, propertyName: string) {
registerDecorator({
name: 'containsSubstring',
target: object.constructor,
propertyName: propertyName,
constraints: [],
options: validationOptions,
validator: {
validate(value: any, args: ValidationArguments): boolean {
if (typeof value !== 'string') {
return false;
}
return value.includes(substring);
},
},
});
};
}
然后,我们可以在类属性上使用这个自定义验证修饰符:
import { IsString } from 'class-validator';
import { ContainsSubstring } from './contains-substring.decorator';
class User {
@IsString()
@ContainsSubstring('admin')
username: string;
}
如果你在使用 class-validator
时遇到问题,例如自定义验证修饰符不起作用,可以检查以下几点:
registerDecorator
中。通过这些步骤,你应该能够解决大多数与 class-validator
相关的问题。
领取专属 10元无门槛券
手把手带您无忧上云