nodejsパラメータ検証

2095 ワード

今日は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など様々な拡張が加えられます.