axios get请求特殊字符编码问题
起因:接口要求传orders%5B0%5D.property=modifiedDate(参数名是orders[0].property,用swagger查看传的就是前面这种编码的)
尝试:
let req = { 'orders%5B0%5D.property': 'modifiedDate', page: form.page, size: form.pageSize
}
结果:/api?orders%255B0%255D.property=modifiedDate&page=1&size=10
原因:axios对参数中包含的%进行了转义导致的
解决:把参数直接拼在url后面
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 }
)