axios 中 get请求,出现特殊字符 比如[ ],出现请求错误,比如说路径找不到
axios请求出错
·
如上图 , 出现了 seachValue为 [ 这种特殊字符。如果不加处理则会导致后端报路径错误,无法解析
所以我们需要的是对这种情况进行编码处理
再拦截器中统一处理 get 请求
if (request.method === 'get') {
// 如果是get请求,且params是数组类型如arr=[1,2],则转换成arr=1&arr=2
request.paramsSerializer = function(params) {
return qs.stringify(params, { arrayFormat: 'repeat' });
};
}
也可以使用下面的方法, 这里需要注意 config.params = {}
是必须的。 如果你想直接修改params 对 key的value进行编码 是不行的
这个好像是和后端的参数解析顺序有关
if (config.method.toUpperCase() === 'GET' && config.params) {
url += '?'
const keys = Object.keys(config.params)
for (const key of keys) {
if (config.params[key] !== undefined && config.params[key] !== null) {
url += `${key}=${encodeURIComponent(config.params[key])}&`
// config.params[key] = encodeURIComponent(config.params[key])
} else {
// debugger
url += `${key}=&`
}
}
url = url.substring(0, url.length - 1)
config.url = url
// debugger
config.params = {}
}
更多推荐
已为社区贡献1条内容
所有评论(0)