在请求中若是url包括特殊字符的话,可能会致使接口接收参数失败,因此前端通常会对特殊字符进行encode,方法有两种前端
对整个url进行编码,会避开url中的功能性字符,例如,& ? [ ]ios
编码前:http://10.10.67.67:8080/api/chain/basic/users?params=+[
编码后:http://10.10.67.67:8080/api/chain/basic/users?params=%2b[axios
对某个参数进行编码,会编码全部特殊字符api
编码前: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的encodeURIurl
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 },