在請求中若是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 },