错误原因:
前端对GET请求的参数进行拼接发送至后台时,拼接的参数有异常,导致后台无法正常解析,这是前端的锅。
这里是把有一个用map存放的查询参数为空时,生成了一个无意义的拼接后缀,导致了出错。
解决办法:
再发送请求的时候,对GET请求的参数进行处理,我这里是放置在 request 的统一拦截器内进行处理
如图,放置在config内即可。
代码:
// get请求映射params参数
if (config.method === 'get' && config.params) {
let url = config.url + '?'
for (const propName of Object.keys(config.params)) {
const value = config.params[propName]
var part = encodeURIComponent(propName) + '='
if (value !== null && typeof (value) !== 'undefined') {
if (typeof value === 'object') {
for (const key of Object.keys(value)) {
const params = propName + '[' + key + ']'
var subPart = encodeURIComponent(params) + '='
url += subPart + encodeURIComponent(value[key]) + '&'
}
} else {
url += part + encodeURIComponent(value) + '&'
}
}
}
url = url.slice(0, -1)
config.params = {}
config.url = url
}
保存后,重新运行程序