daily-share icon indicating copy to clipboard operation
daily-share copied to clipboard

qs 处理参数的时的一个坑

Open yaogengzhu opened this issue 10 months ago • 0 comments

在处理 '2024-04-01 19:00:00' 遇到空格时,会格式化处理,因此优化方案如下

const formatParams = (data = {}, method = 'get') => {
  const newParams = Object.assign(data);
  const keys = Object.keys(newParams).sort((a, b) => a.localeCompare(b));
  const newParams1 = {};
  keys.forEach((key) => {
    newParams1[key] = newParams[key];
  });
  const stirngA = qs.stringify(newParams1, {
    encoder: (str) => {
      if (typeof str !== 'string') return str;
      return str.replace(/ /g, ' ');
    },
  });
  const stringSignTemp = `${stirngA}&key=${config.hyKey}`;
  const sign = md5.md5Hash(stringSignTemp).toString().toUpperCase();
  if (method === 'get') {
    const otherParams = Object.assign(newParams1, {
      sign,
    });
    return qs.stringify(otherParams, {
      encoder: (str) => {
        if (typeof str !== 'string') return str;
        return str.replace(/ /g, ' ');
      },
    });
  }
  const otherParams = Object.assign(newParams1, {
    sign,
  });
  return otherParams;
};

yaogengzhu avatar Apr 10 '24 14:04 yaogengzhu