一、问题描述
使用axios进行post请求,传参类型为query,请求报错,同样的数据使用swagger进行请求,可以正确返回数值。
二、错误分析
当使用axios进行post请求,传参类型为query时,参数会拼接在请求的URL中,而当参数中含有中文时,会自动对其进行转义编码。仔细观察使用如下所示的请求方法产生的URL
let params = {
context:"中文"
}
this.$axios({
method:"post",
url:"192.168.1.1:8090/api/test",
params:params
}).then()
与使用swagger请求产生的URL是不同的,可见是对中文转义编码不同造成的错误。
三、解决方法
使用URLSearchParams解决,将请求写为:
let params = new URLSearchParams();
params.append("context","中文");
this.$axios({
method:"post",
url:"192.168.1.1:8090/api/test",
params:params
}).then()