null或empty vs no param - 使用可选参数调用API

时间:2016-06-02 15:54:22

标签: javascript api rest

有什么更好的方法吗?什么是可选参数的正常情况?

  • 使用null或空字符串值发送所有参数
  • 或者只是在没有它们的情况下调用API?

正在发送所有值:

var params{
    param1: 'demo',
    param2: null,
    param3: 'demo',
    param4: null,
    param5: '',
    param6: 'demo',
    param7: 'demo'
}

$.get(apiURL, params, function(data){
    //response
});

仅发送必要的值:

var param2 = {
    paramName: 'param2',
    value: null
};
var param4 = {
    paramName: 'param4',
    value: null
};
var param5 = {
    paramName: 'param5',
    value: ''
};

var params{
    param1: 'demo',
    param3: 'demo',
    param6: 'demo',
    param8: 'demo'
};

//adding params if they have a value
var optionalValues = [param2, param4, param5];
optionalValues.forEach(function(optionalParam) {

    //not null or empty?
    if(optionalParam.value && optionalParam.value.length){
        var param = {};
        param[optionalParm.paramname] = optionalParam.value;
        params.push(param);
    }
});

$.get(url, params, function(data){
    //response
});

由于API服务可能记录了它获得的所有参数,因此发送不必要的信息似乎会增加日志的大小,甚至在收到不必要的信息时也会使它们更难以阅读。

1 个答案:

答案 0 :(得分:1)

好。 JavaScript可以做到这一点。

var params = {
    param1: 'demo',
    param2: null,
    param3: 'demo',
    param4: null,
    param5: '',
    param6: 'demo',
    param7: 'demo'
}
for(x in params) { if(params[x] === undefined || params[x] === null || params[x] === '') { delete params [x]; } }
console.log(params);

$.get(url, params, function(data){
    //response
});

但我建议使用' lodash'或者' underscore'为了更多的乐趣!

_.pickBy(params) // pick param1, 3, 6 and 7 :)

$.get(url, _.pickBy(params), function(data){
    //response
});