Vue.js——vue-resource用法和axios插件

安装:cnpm install vue-resource --save

vue-resource就像jQuery里的$.ajax,用来和后端交互数据的。可以放在created或者ready里面运行来获取或者更新数据。

1.get

this.$http.get(url,[option]).then(successCallback, errorCallback):

第一个参数url是请求的地址,第二个参数是option,参数写在params,header中也可以注入。then里面接受两个回调,成功的回调和失败的回调。

                get:function(){
                    this.$http.get("package1.json",{
                        params:{
                            userId:"101"
                        },
                        headers:{
                            token:"abcd"
                        }
                    }).then(res=>{
                        this.msg = res.data;
                    },error=>{
                        this.msg = error;
                    })
                },

2.post

post请求稍有不同,第一个参数是requstBody,还有一个参数是option,即:

this.$http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);
                post:function(){
                    this.$http.post("package.json",{
                        userId:"102"
                    },{
                        headers:{
                            access_token:"abc"
                        }
                    }).then(function(){
                        this.msg = res.data;
                    },error=>{
                        this.msg = error;
                    })
                }

3.全局拦截器

this.$http.get也相当于vue.http.get

Vue.http.interceptors.push(function(req,next)可以设置一个全局的拦截器,其中在拦截器中,next表示请求结束相应结束之后的回调。我们可以利用拦截器,拦截请求前和请求后,进行相应的处理,可以对一些错误进行处理。

             mounted:function(){
                //next表示请求结束相应结束之后的回调
                //拦截请求前和请求后,进行相应的处理,
                Vue.http.interceptors.push(function(req,next){
                    console.log('请求初始化');
                    next(function(res){
                        console.log("相应完成");
                        return res;
                    });
                })
            },

也允许使用设置http来设置全局路径:


            http:{
                //全局路径的设置
                root:"file:///E:/webProject/Demo7/"
            },

并且,也可以在methods中直接设置http函数进行配置:

                http:function(){
                    this.$http({
                        url:"package.json",
                        params:{
                            userId:"103"
                        },
                        headers:{
                            token:"123"
                        },
                        timeout:5,
                        before:function(){
                            console.log("before init");
                        }
                    }).then(function(){
                        this.msg = res.data;
                    },error=>{
                        this.msg = error;
                    });
                }

Axios插件的应用

1.get请求:

                get:function(){
                    axios.get("package.json",{
                        params:{
                            userId:"999"
                        },headers:{
                            token:"jack"
                        }
                    }).then(res=>{
                        this.msg = res.data;
                        console.log("这是利用axios获得的");
                    }).catch(function(error){
                        console.log("出错了");
                    })
                }

 2.post请求:

                post:function(){
                    axios.post("package.json",{
                        userId:"888"
                    },{
                        headers:{
                            token:"tom"
                        }
                    }).then(res=>{
                        this.msg = res.data;
                    })
                },

3.http配置

                http:function(){
                    axios({
                        url:"package.json",
                        method:"get",
                        data:{
                            userId:"101"
                        },
                        headers:{
                            token:"http-test"
                        }
                    }).then(res=>{
                        this.msg = res.data;
                    })
                }

拦截器拦截:

            mounted:function(){
                //拦截用户所有的请求
                axios.interceptors.request.use(function(config){
                    console.log("request init.");
                    return config;
                });
                //拦截响应
                axios.interceptors.response.use(function(response){
                    console.log("response init.");
                    return response;
                })
            },

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值