0%

axios 发 post 请求问题

axios post 请求

1
2
3
4
5
6
7
8
axios({
method: 'post',
url: '/user/12345',
data: {
"username": "admin",
"pwd": "admin"
}
});

结果:后台没有接收到传参

解决方案

1
2
3
4
5
6
7
8
9
10
11
12
import Qs from 'qs'
let data = {
"username": "admin",
"pwd": "admin"
}

axios({
method: 'post',
url: '/user/12345',
data: Qs.stringify(data),
headers: { "Content-Type": "application/x-www-form-urlencoded" }
})

原因
HTTP 请求中的 get 请求和 post 请求参数的存放位置是不一样的,get 请求的参数以键值对的方式跟在 url 后面的,而 post 请求的参数是以键值对的方式在请求体里的。
GET 方法传递参数时使用的是 params,是以/user?ID=1&name=mike&sex=male 形式传递的
使用 POST 时对应的传参使用的是 data,是{ “name” : “mike”, “sex” : “male” }
为何要设置请求头里的’Content-Type’:
因为 axios 默认的 content-type 是 application/json,具体怎么传,取决于后端要怎么接受数据。