vue-resourse简单使用方法

vue

一、安装引用

安装:

npm install vue-resource --save-dev

引用:

/*引入Vue框架*/

import Vue from 'vue'

/*引入资源请求插件*/

import VueResource from 'vue-resource'

/*使用VueResource插件*/

Vue.use(VueResource)

二、简单语法

引入vue-resource后,可以基于全局的Vue对象使用http,也可以基于某个Vue实例使用http

// 基于全局Vue对象使用http

Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback);

Vue.http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);

// 在一个Vue实例内使用$http

this.$http.get('/someUrl', [options]).then(successCallback, errorCallback);

this.$http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);

// 传统写法

this.$http.get('/Url', [options]).then(function(response){

// 响应成功回调

}, function(response){

// 响应错误回调

});

// ES6写法

this.$http.get('/Url', [options]).then((response) => {

// 响应成功回调

}, (response) => {

// 响应错误回调

});

1.有7种符合REST风格的请求API:

get(url, [options])

head(url, [options])

delete(url, [options])

jsonp(url, [options])

post(url, [body], [options])

put(url, [body], [options])

patch(url, [body], [options])

2.options对象:

3.emulateHTTP

如果Web服务器无法处理PUT, PATCH和DELETE这种REST风格的请求,你可以启用enulateHTTP现象。启用该选项后,请求会以普通的POST方法发出,并且HTTP头信息的X-HTTP-Method-Override属性会设置为实际的HTTP方法。

Vue.http.options.emulateHTTP = true;

4.emulateJSON

如果Web服务器无法处理编码为application/json的请求,你可以启用emulateJSON选项。启用该选项后,请求会以application/x-www-form-urlencoded作为MIME type,就像普通的HTML表单一样。

Vue.http.options.emulateJSON = true;

三、实例

var demo = new Vue({

el: '#app',

data: {

gridColumns: ['customerId', 'companyName', 'contactName', 'phone'],

gridData: [],

apiUrl: 'http://127.0.0.1:8080/api/customers'

},

mounted: function() {

this.getCustomers()

},

methods: {

getCustomers: function() {

this.$http.get(this.apiUrl).then((response) => {

this.$set('gridData', response.data)

},(response) => {

console.log("出错了");

}).catch(function(response) {

console.log(response)

})

}

}

});

then方法里提供了successCallbackerrorCallback。catch方法用于捕捉程序的异常,catch方法和errorCallback是不同的,errorCallback只在响应失败时调用,而catch则是在整个请求到响应过程中,只要程序出错了就会被调用。

在then方法的回调函数内,你也可以直接使用this,this仍然是指向Vue实例的。为了减少作用域链的搜索,建议使用一个局部变量来接收this。

四、inteceptor拦截器

拦截器可以在请求发送前和发送请求后做一些处理。在response返回给successCallback或errorCallback之前,你可以修改response中的内容,或做一些处理。 例如,响应的状态码如果是404,你可以显示友好的404界面。再比如我们就用拦截器做了登录处理,所以请求发送之前都要通过拦截器验证当前用户是否登陆,否则提示登录页面。

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

// ...

// 请求发送前的处理逻辑

// ...

next(function(response) {

// ...

// 请求发送后的处理逻辑

// ...

// 根据请求的状态,response参数会返回给successCallback或errorCallback

return response

})

})

1)为请求添加loading效果

  通过inteceptor,我们可以为所有的请求处理加一个loading:请求发送前显示loading,接收响应后隐藏loading。

//1、添加一个loading组件

<template id='loading-template'>

<div class='loading-overlay'></div>

</template>

//2、将loading组件作为另外一个Vue实例的子组件

var help = new Vue({

el: '#help',

data: {

showLoading: false

},

components: {

'loading': {

template: '#loading-template',

}

}

})

//3、将该Vue实例挂载到某个HTML元素

<div id='help'>

<loading v-show='showLoading'></loading>

</div>

//4、添加inteceptor

Vue.http.interceptors.push((request, next) => {

loading.show = true;

next((response) => {

loading.show = false;

return response;

});

});

2)为请求添加共同的错误处理方法

//1、继续沿用上面的loading组件,在#help元素下加一个对话框

<div id='help'>

<loading v-show='showLoading' ></loading>

<modal-dialog :show='showDialog'>

<header class='dialog-header' slot='header'>

<h3 class='dialog-title'>Server Error</h3>

</header>

<div class='dialog-body' slot='body'>

<p class='error'>Oops,server has got some errors, error code: {{errorCode}}.</p>

</div>

</modal-dialog>

</div>

//2、给help实例的data选项添加两个属性

var help = new Vue({

el: '#help',

data: {

showLoading: false,

showDialog: false,

errorCode: ''

},

components: {

'loading': {

template: '#loading-template',

}

}

})

//3、修改inteceptor

Vue.http.interceptors.push((request, next) => {

help.showLoading = true;

next((response) => {

if(!response.ok){

help.errorCode = response.status;

help.showDialog = true;

}

help.showLoading = false;

return response;

});

});

以上是 vue-resourse简单使用方法 的全部内容, 来源链接: utcz.com/z/380635.html

回到顶部