Vue----vue-resource

参考文章:https://www.cnblogs.com/Juphy/p/7073027.html  、https://www.cnblogs.com/chenhuichao/p/8308993.html

Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没有必要引入jQuery。vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应。也就是说,$.ajax能做的事情,vue-resource插件一样也能做到,而且vue-resource的API更为简洁。另外,vue-resource还提供了非常有用的inteceptor功能,使用inteceptor可以在请求前和请求后附加一些行为,比如使用inteceptor在ajax请求时显示loading界面。

vue-resource特点

vue-resource插件具有以下特点:

1、体积小

      vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip压缩后只有4.5KB大小,这远比jQuery的体积要小得多。

2、支持主流的浏览器

      和Vue.js一样,vue-resource除了不支持IE 9以下的浏览器,其他主流的浏览器都支持。

3、支持Promise API和URI Templates

      Promise是ES6的特性,Promise的中文含义为“先知”,Promise对象用于异步计算。
      URI Templates表示URI模板,有些类似于ASP.NET MVC的路由模板。

4、支持拦截器

      拦截器是全局的,拦截器可以在请求发送前和发送请求后做一些处理。
      拦截器在一些场景下会非常有用,比如请求发送前在headers中设置access_token,或者在请求失败时,提供共通的处理方式。

vue-resource 安装

npm install vue-resource --save-dev
/*引入Vue框架*/
import Vue from 'vue'
/*引入资源请求插件*/
import VueResource from 'vue-resource'

/*使用VueResource插件*/
Vue.use(VueResource)

CURD实例

1、GET请求

this.$http.get("this.apiUrl/id?key=value&key=value&key=value").then(response => {
  
}).catch(error => {
  console.log('获取json数据失败' + error)
})

2、POST请求

this.$http.post(this.apiUrl, this.item).then(response => {
  
}).catch(error => {
  console.log('获取json数据失败' + error)
})

3、PUT请求

this.$http.put(this.apiurl + '/' + id, this.item).then(response => {
   
}).catch(error => {
   console.log('获取json数据失败' + error)
})

4、Delete请求

this.$http.delete(this.urlapi+'/'+id,{body: arr}).then(response => {
       
}).catch(error => {
  console.log("获取json数据失败" + error);
});

 5、header携带token,拦截器拦截401

Vue.http.headers.common['token'] = window.localStorage.getItem('token')
Vue.http.interceptors.push((request, next) => {
 next((response) => { // 在响应之后传给then之前对response进行修改和逻辑判断。对于token时候已过期的判断,就添加在此处,页面中任何一次http请求都会先调用此处方法
  if (response.status === 401) {
           // request.headers.set('token', window.localStorage.getItem('token'))
    }
  })
})

  

原文地址:https://www.cnblogs.com/zhengziru/p/9950707.html