验证restful API接口的参数(Verify the restful API interface parameters)
npm install https://github.com/ruanjiayou/validator.git --save
// 特别注意:methods中不能用箭头函数,this是指向validator实例的,validator有一些基本的内置方法(isInt,isFloat等)
// express项目,路由中验证参数
const validator = require('validater-max');
const validation = new validater({
// lang: 'zh-cn', //设置语言
rules: {
id: 'required|int',
time: 'required|date',
status: 'required|enum:pending,success,fail',
IDCard: 'required|methods:isIDCard18,other'
},
methods: {
isIDCard18: function(v) {
return this.isID(v);
},
other: function(v) {
// ... 自定义验证,返回boolean值
}
}
});
// 方式一
const input = validation.filter(req.body);
try {
validation.check(input);
// ... 业务代码
} catch(err) {
return next(err);
}
// 方式二
try {
const input = validation.validate(req.body);
// ... 业务代码
} catch(err) {
next(err);
}
删除了代码中的逻辑验证.不要瞎jb写 required|nullable,min:abc,require少个d,range:(20,10),methods:fn1,,fn2等等乱七八的东西
required,nullable,empty,nonzero的区别:required,值不能为undefined;nullable,值可以为null,empty,值可以为空字符串;(empty:专门为前端准备,有些人就是要传id=&search=&time=);nonzero,不能是0或'0' '000'
file类型: 可以为文件对象,可以为字符串
一.内置字段类型(小写)
元类型: boolean/enum/int/float/object/array/string/url/email/date/dateonly/timeonly/file/methods/IDCard/creditCard
限制类型两大类:required/nullable/empty/nonzero/ignore/default/alias/min/max/length/minlength/maxlength/if
说明:联合使用要求,min/max和int/float,minlength/maxlength/length和string
int/float默认{m:10,n:2}
二.内置判断方法
isUrl()/isDate()/isInt()/isFloat()/isEmail()/isID()/isCredit()/isString()/isChar()/isFile()
三.其他成员函数说明
1) error() 统一错误处理,抛出异常
2) filter() 滤除参数中额外的字段
3) check() 对参数中指定的字段进行验证
4) validate() 集成了filter()和check()的功能
5) _str2rule() 将某个字段简约的字符串规则转化为详细的规则对象
6) parse() 对所有的字段使用_str2rule()
7) compile() 简单模板替换