vue axios通过get和post传递参数的不同

注意这个是不一样的。
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']

猜你喜欢

转载自blog.csdn.net/qq_41337100/article/details/106454153