axios 中 get请求,出现特殊字符 比如[ ],出现请求错误,比如说路径找不到

在这里插入图片描述
如上图 , 出现了 seachValue为 [ 这种特殊字符。如果不加处理则会导致后端报路径错误,无法解析

所以我们需要的是对这种情况进行编码处理
再拦截器中统一处理 get 请求
在这里插入图片描述

  if (request.method === 'get') {
      // 如果是get请求,且params是数组类型如arr=[1,2],则转换成arr=1&arr=2
      request.paramsSerializer = function(params) {
        return qs.stringify(params, { arrayFormat: 'repeat' });
      };
    }

也可以使用下面的方法, 这里需要注意 config.params = {}
是必须的。 如果你想直接修改params 对 key的value进行编码 是不行的
这个好像是和后端的参数解析顺序有关

   if (config.method.toUpperCase() === 'GET' && config.params) {
        url += '?'
        const keys = Object.keys(config.params)
        for (const key of keys) {
          if (config.params[key] !== undefined && config.params[key] !== null) {
            url += `${key}=${encodeURIComponent(config.params[key])}&`
            // config.params[key] = encodeURIComponent(config.params[key])
          } else {
            // debugger
            url += `${key}=&`
          }
        }
        url = url.substring(0, url.length - 1)
        config.url = url
        // debugger
        config.params = {}
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值