在要求中假如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
},