Vue-resource使用基础

vue-resource

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

安装

在项目路径中使用如下命令进行安装

npm install vue-resource --save

引入

main.js中引入

import VueResource from 'vue-resource'
Vue.use(VueResource);

Git传送门:https://github.com/pagekit/vue-resource/blob/master/README.md

文档传送门:http://www.doc00.com/doc/1001004eg

HTTP

一个vue实例提供this.$http服务发送http请求,请求方法的调用会返回一个响应进行处理。vue实例会自动绑定到该实例所有的函数回调上。

http方法传送门:https://github.com/pagekit/vue-resource/blob/master/docs/http.md

vue-resource的http服务可以在全局使用Vue.http或者在一个vue实例中使用this.$http进行调用。

有如下几种方式去进行调用:

  • get(url, [options])
  • head(url, [options])
  • delete(url, [options])
  • jsonp(url, [options])
  • post(url, [body], [options])
  • put(url, [body], [options])
  • patch(url, [body], [options])

使用例子:

POST方式
//新增数据操作
var data = vm.news;

this.$http.post(API.rootPath + "/news", data, {emulateJSON: false}).then((response) => {
  //console.log(response.body);
  if(response.body.status == 0) {
      vm.$message({
          message: '保存成功',
          type: 'success'
      });
      vm.diaAddStatus = false;

      this.initData();
  } else {
       vm.$message.error('保存失败');
  }
});
GET方式
//获取列表操作
this.loading = true;
this.$http.get(API.rootPath + "/news", {
  params: {
    offset: this.limit*(this.currentPage - 1), 
    limit: this.limit,
    searchKey: this.searchKey
  }
}).then((response)=>{
    if(response.body.status == 0) {
        if(response.body.data != null) {
            console.log(response.body.data);
            this.tableData = response.body.data.rows;
            this.total = response.body.data.total;
            //分割tags标签
        //   this.dynamicTags = this.company.tags.split(","); 

            this.loading = false;
        } else {
                this.$message({
                message: '没有数据',
                type: 'warning'
            });
        }
    }
});
DELETE方式
//删除数据的操作

this.$confirm('您确认要删除吗?')
.then(_ => {
    var vm = this;
    //查询出指定id的product,然后进入修改页面
    this.$http.delete(API.rootPath + "/news/" + id).then((response) => {
        console.log(response.body);
        if(response.body.status == 0) {
            this.$message({
                message: '删除成功',
                type: 'success'
            });
            this.initData();
        } else {
            this.$message.error('删除失败');
        }
    });                     
    done();
})
.catch(_ => {});
PUT方式
//冻结用户(修改用户状态)的函数操作

this.$confirm('要冻结此用户?', '提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
}).then(() => {

    this.$http.put(API.users + "/" + id, {}, {params:{isActive: "-1"}, emulateJSON: true}).then((response) => {

        //返回值是0的时候表示成功,重新加载数据
        if(response.body.status == 0) {
            this.loadData();
        }
    }, (response) => {
        // error callback
    }); 
}).catch(() => {
    this.$message({
        type: 'info',
        message: '已取消'
    });
});

拦截器Interceptors

Interceptors能够在全局定义,用来在请求发送前对请求进行一些预处理。如果请求使用this. httpthis. h t t p 或 t h i s . resource发送,则当前vue实例能够在拦截器中回调。

如下例子:

请求处理

Vue.http.interceptors.push(function(request, next) {

  // modify method
  request.method = 'POST';

  // modify headers
  request.headers.set('X-CSRF-TOKEN', 'TOKEN');
  request.headers.set('Authorization', 'Bearer TOKEN');

  // continue to next interceptor
  next();
});

请求和响应一块处理

Vue.http.interceptors.push(function(request, next) {

  // modify request
  request.method = 'POST';

  // continue to next interceptor
  next(function(response) {

    // modify response
    response.body = '...';

  });
});

返回一个响应并且组织请求发送

Vue.http.interceptors.push(function(request, next) {

  // modify request ...

  // stop and return response
  next(request.respondWith(body, {
    status: 404,
    statusText: 'Not found'
  }));
});

覆盖默认拦截器

所有的默认拦截器回调都能够覆写,去改变他们的行为。所有拦截器通过Vue.http.interceptor对象提供给外部,这些方法有:before, method, jsonp, json, form, header and cors.

Vue.http.interceptor.before = function(request, next) {

  // override before interceptor

  next();
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值