将Axios从0.27.2升级到1.6.2会中断带有参数的get请求,我该怎么办?

nxowjjhe  于 12个月前  发布在  iOS
关注(0)|答案(2)|浏览(334)

我最近试图修复一个项目中的所有npm漏洞,其中一部分尝试是将Axios从0.27.2升级到1.6.2。
在这样做的过程中,axios.get请求的params prop的格式被更改。它从类似于:


的数据
类似于:



来源:https://github.com/axios/axios/issues/4999
如何升级Axios但仍使用与以前相同的格式?
我尝试将以下内容添加到Axios示例,但似乎不起作用:


q3aa0525

q3aa05251#

原来Axios在1.6.2中为get请求发送数据。我的问题是,我假设当为params的子属性发送对象或数据数组时,我必须解码(解析)JSON数据。
在我的后端代码中删除了这个假设之后,一切都正常了。

uyto3xhc

uyto3xhc2#

使用此

axios.defaults.paramsSerializer = params =>
  Object.keys(params)
    .filter(key => params[key] !== undefined)
    .map(key => {
      if (Object.prototype.toString.call(params[key]) === "[object Object]") {
        params[key] = JSON.stringify(params[key]);
      }
      if (Array.isArray(params[key])) {
        return params[key].map((v: any) => `${key}[]=${encodeURIComponent(v)}`).join("&");
      }
      return `${key}=${encodeURIComponent(params[key])}`;
    })
    .join("&");

字符串

相关问题