axios({
headers: {
'deviceCode': 'A95ZEF1-47B5-AC90BF3'
},
method: 'post',
url: '/api/lockServer/search',
data: {
username,
pwd
}
})
(本人测试qs有效,但是据相关资料显示qs会在对象某个属性值为空的时候将该属性去掉,所以本人使用的是formData传参)
原因:
后台使用 spring mvc
并且在这个方法上使用了注解 @RequestParam,这个是只能从请求的地址中取出参数,也就是只能从 username=admin&password=admin 这种字符串中解析出参数。
同时 Content-Type:application/json;charset=UTF-8
原因:
axios会帮我们 转换请求数据和响应数据 以及 自动转换 JSON 数据
我们知道在做 post 请求的时候,我们的传参是 data: {...} 或者直接 {...} 的形式传递的,axios会将Content-Type 变成了 application/json;charset=utf-8,axios 帮我们做了一个 stringify 的处理,传递后台。
和@RequestParam 不符合。
用 URLSearchParams
let param = new URLSearchParams()
param.append('username', 'admin')
param.append('pwd', 'admin')
axios({
method: 'post',
url: '/api/lockServer/search',
data: param
})
需要注意的是: URLSearchParams 不支持所有的浏览器,
引入 qs , axios包含这个库
import Qs from 'qs'
let data = {
"username": "admin",
"pwd": "admin"
}
axios({
headers: {
'deviceCode': 'A95ZEF1-47B5-AC90BF3'
},
method: 'post',
url: '/api/lockServer/search',
data: Qs.stringify(data)
})
formData对象来实现
let formData=new FormData;
for (var k in params)
{
formData.append(k, params[k]);
}
参考地址:https://blog.csdn.net/csdn_yudong/article/details/79668655?utm_source=blogxgwz4#_1