当接口参数有些为空字符串、null或undefined值时,qs.stringify 构造后的 url 通常就会:
url?params1=aa¶ms2=¶ms3=cc
为此我们在 qs.stringify
基础上利用 skipNulls
再进行封装:
import { stringify } from 'qs';
export function qsStringify(params:object){
for(let key in params){
if(params[key]===''){
params[key] = null;
}
}
return stringify(params,{skipNulls:true})
}
测试:
// 测试数据:{ a: '', b: null, c: undefined, d: false, e: 0, f: '0' }
// qsStringify 结果:d=false&e=0&f=0
也可以尝试另一种方法:
import lodash from 'lodash';
let params=lodash.pickBy(test,item=>item)
//过滤数据规则自己写