在请求中如果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的encodeURImyAxios.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 },