nodejs參數(shù)驗證

今天在用nodejs開發(fā)后臺的時候遇到了一個問題,就是在修改信息的時候怎么驗證參數(shù),這里既要驗證參數(shù)的可修改性,又要驗證參數(shù)的合法性,于是我就寫了個方法來驗證,思路大概是這樣的,建立一個數(shù)組,里面食是參數(shù)為key的字典,字典里面包含了幾種屬性

  • 是否必須存在 required
  • 是否可為空 allowNull
  • 長度限制 Maxlength

這樣做的話保證了所傳遞的參數(shù)必須在數(shù)組之內(nèi),防止其他的非法參數(shù),如果檢測到非允許修改的參數(shù)傳遞進來,直接返回500。

這里最簡單的例子
在我們修改個人信息的時候,我們只允許修改姓名和電話號碼,所以我們設(shè)置一個列表來進行過濾

{
"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) {
            //判斷參數(shù)是否存在
            if(!args[i]){
                console.log("缺少參數(shù)"+i);
                return false;
            }
        }
    }

    //判斷參數(shù)是否在允許的列表中
    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

輸出結(jié)果

{ name: 'chenhao' }
false
true
缺少參數(shù)phone

可以看到提示缺少phone

輸入:

name:chenhao,
phone:188888888888

輸出:

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

提示參數(shù)長度超過限制

輸入:

name:chenhao,
phone:188888888888,
gender:man

輸出:

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

這里看到檢測到了非法的gender參數(shù)

以上就是最簡單的參數(shù)檢查,我這里在對檢驗失敗后統(tǒng)一進行了錯誤500的返回,也可以是自動過濾掉非法的參數(shù)而不返回錯誤。這個方法可以根據(jù)實際情況進行擴展,比如加上isEmail,isNumber等各種擴展。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容