注意这个是不一样的。
get方法:
因为http中get方法是直接把参数附在url的后面,所以本来应该是用过字符串的拼接来穿度参数。
就是 url += ?ID=123
这样,但是axios完成了封装,可以在后面使用params写出参数。
注意必须是{params:{ 字典序列}}
,当然如果没有参数可以直接省略。
axios.get(url,{
params:{'id': id, 'message': message},
).then((res) => {
console.log(res)
})
服务器端收到的请求如图是直接拼接在url后面了。
post方法是在请求体之中,一般来说要经过qs序列化再发送:
axios.post(
url,
qs.stringify({'id': id, 'message': message})
);
注意:此时最好给axios加上请求头,意味着此时传输的是表单(字符串)信息:
var instance = axios.create({ timeout: 1000 * 12});
// 设置post请求头
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
比如此时输出request.body:'price=70&recieverName=zzz&reciverPhone=13748333476'
但是这意味着必须这样吗?不。
如果不设置 application/x-www-form-urlencoded 请求头,用字典序列,此时axios会帮你转换成json格式。
let data = {
lab_id: obj.lab_id,
start_time: obj.start_time,
end_time:obj.end_time
};
return axios.post(
`${base.order}/Create/`,
data,
);
此时传输的格式是这样的:[{'itemId': 4, 'num': 2}]
所以后端接收到的数据从json转换成字典之后就能直接使用了:
data = json.loads(request.body)
userId = data['userId']
recieverName = data['recieverName']
reciverPhone = data['reciverPhone']