nodejs参数验证

今天在用nodejs开发后台的时候遇到了一个问题,就是在修改信息的时候怎么验证参数,这里既要验证参数的可修改性,又要验证参数的合法性,于是我就写了个方法来验证,思路大概是这样的,建立一个数组,里面食是参数为key的字典,字典里面包含了几种属性

  • 是否必须存在 required
  • 是否可为空 allowNull
  • 长度限制 Maxlength

这样做的话保证了所传递的参数必须在数组之内,防止其他的非法参数,如果检测到非允许修改的参数传递进来,直接返回500。

这里最简单的例子
在我们修改个人信息的时候,我们只允许修改姓名和电话号码,所以我们设置一个列表来进行过滤

{
"key":[是否必须,最大长度]
}
var enableList = {
        "name": [false, 0],
        "phone": [true, 11]
    }

这里我们让姓名为非必填,长度不限制,电话号码为必填,最大长度为11位。

检验的方法为

//check required
    for(var i in rules){
        console.log(rules[i][0]);
        if(rules[i][0] == true) {
            //判断参数是否存在
            if(!args[i]){
                console.log("缺少参数"+i);
                return false;
            }
        }
    }

    //判断参数是否在允许的列表中
    for (var i in args) {
        if(!rules[i]){
            console.log("invalid args");
            return false;
        }
        //限制长度
        if(rules[i][1]!=0){
            if(args[i].length>rules[i][1]) {
                console.log("args too long");
                return false;
            }
        }
    }
    return true;

我们来进行一下测试

输入

name:chenhao

输出结果

{ name: 'chenhao' }
false
true
缺少参数phone

可以看到提示缺少phone

输入:

name:chenhao,
phone:188888888888

输出:

{ name: 'chenhao', phone: '188888888888' }
false
true
false
args too long

提示参数长度超过限制

输入:

name:chenhao,
phone:188888888888,
gender:man

输出:

{ name: 'chenhao', phone: '1888888888', gender: 'man' }
false
true
false
invalid args

这里看到检测到了非法的gender参数

以上就是最简单的参数检查,我这里在对检验失败后统一进行了错误500的返回,也可以是自动过滤掉非法的参数而不返回错误。这个方法可以根据实际情况进行扩展,比如加上isEmail,isNumber等各种扩展。

你可能感兴趣的:(nodejs参数验证)