axios不会对url中的功能性字符举行编码

在要求中假如url包含特别字符的话,可能会致使接口吸收参数失利,所以前端平常会对特别字符举行encode,要领有两种

  • encodeURI()

对全部url举行编码,会避开url中的功能性字符,比方,& ? [ ]

编码前:http://10.10.67.67:8080/api/chain/basic/users?params=+[
编码后:http://10.10.67.67:8080/api/chain/basic/users?params=%2b[

  • encodeURIComponent()

对某个参数举行编码,会编码一切特别字符

编码前:http://10.10.67.67:8080/api/chain/basic/users?params=+[
编码后:http://10.10.67.67:8080/api/chain/basic/users?params=%2b%5B

在axios中就会对get要求的全部url举行encodeURI,致使有些get要领不能传[],所以在要求拦截器中可以对get要领零丁处置惩罚,避开axios的encodeURI

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
  },
    原文作者:Sherry_瑞雪
    原文地址: https://segmentfault.com/a/1190000018384777
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞