axios get请求特殊字符编码问题

axios get请求特殊字符编码问题

Axios中的参数为啥没被完全编码

起因:接口要求传orders%5B0%5D.property=modifiedDate(参数名是orders[0].property,用swagger查看传的就是前面这种编码的)

尝试:

let req = {
  'orders%5B0%5D.property': 'modifiedDate',
  page: form.page,
  size: form.pageSize
}

结果:/api?orders%255B0%255D.property=modifiedDate&page=1&size=10

原因:axios对参数中包含的%进行了转义导致的

解决:把参数直接拼在url后面

myAxios.interceptors.request.use(
  config => {
    let url = config.url
    // get参数编码
    if (config.method === 'get' && config.params) {
      url += '?'
      let keys = Object.keys(config.params)
      for (let key of keys) {
        url += `${key}=${encodeURIComponent(config.params[key])}&`
      }
      url = url.substring(0, url.length - 1)
      config.params = {}
    }
    config.url = url
    return config
  }
)

 

posted @ 2022-07-19 17:06  霓裳依旧  阅读(1371)  评论(0编辑  收藏  举报