qs.stringify 构造 Url 参数剔除空字符串、null及undefined值

795 阅读1分钟

当接口参数有些为空字符串、null或undefined值时,qs.stringify 构造后的 url 通常就会: url?params1=aa&params2=&params3=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) 
//过滤数据规则自己写