在这里插入图片描述
如上图 , 出现了 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 = {}
      }
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐