resource全攻略(3)

var demo = new Vue({ el: '#app', data: { show: false, gridColumns: [{ name: 'customerId', isKey: true }, { name: 'companyName' }, { name: 'contactName' }, { name: 'phone' }], gridData: [], apiUrl: 'http://211.149.193.19:8080/api/customers', item: {} }, ready: function() { this.getCustomers() }, methods: { closeDialog: function() { this.show = false }, getCustomers: function() { var vm = this vm.$http.get(vm.apiUrl) .then((response) => { vm.$set('gridData', response.data) }) }, createCustomer: function() { var vm = this vm.$http.post(vm.apiUrl, vm.item) .then((response) => { vm.$set('item', {}) vm.getCustomers() }) this.show = false } } })

resource全攻略

 PUT请求

updateCustomer: function() { var vm = this vm.$http.put(this.apiUrl + 'https://www.jb51.net/' + vm.item.customerId, vm.item) .then((response) => { vm.getCustomers() }) }

resource全攻略

 

Delete请求

deleteCustomer: function(customer){ var vm = this vm.$http.delete(this.apiUrl + 'https://www.jb51.net/' + customer.customerId) .then((response) => { vm.getCustomers() }) }


resource全攻略

使用resource服务

vue-resource提供了另外一种方式访问HTTP——resource服务,resource服务包含以下几种默认的action:

get: {method: 'GET'}, save: {method: 'POST'}, query: {method: 'GET'}, update: {method: 'PUT'}, remove: {method: 'DELETE'}, delete: {method: 'DELETE'}

resource对象也有两种访问方式:

全局访问:Vue.resource

实例访问:this.$resource

resource可以结合URI Template一起使用,以下示例的apiUrl都设置为{/id}了:

apiUrl: 'http://211.149.193.19:8080/api/customers{/id}'

GET请求

使用get方法发送GET请求,下面这个请求没有指定{/id}。

getCustomers: function() { var resource = this.$resource(this.apiUrl) vm = this resource.get() .then((response) => { vm.$set('gridData', response.data) }) .catch(function(response) { console.log(response) }) }

POST请求

使用save方法发送POST请求,下面这个请求没有指定{/id}。

createCustomer: function() { var resource = this.$resource(this.apiUrl) vm = this resource.save(vm.apiUrl, vm.item) .then((response) => { vm.$set('item', {}) vm.getCustomers() }) this.show = false }

 PUT请求

使用update方法发送PUT请求,下面这个请求指定了{/id}。

updateCustomer: function() { var resource = this.$resource(this.apiUrl) vm = this resource.update({ id: vm.item.customerId}, vm.item) .then((response) => { vm.getCustomers() }) }

{/id}相当于一个占位符,当传入实际的参数时该占位符会被替换。

例如,{ id: vm.item.customerId}中的vm.item.customerId为12,那么发送的请求URL为:

:8080/api/customers/12

 DELETE请求

使用remove或delete方法发送DELETE请求,下面这个请求指定了{/id}。

deleteCustomer: function(customer){ var resource = this.$resource(this.apiUrl) vm = this resource.remove({ id: customer.customerId}) .then((response) => { vm.getCustomers() }) }

 使用inteceptor

拦截器可以在请求发送前和发送请求后做一些处理。

resource全攻略

基本用法

Vue.http.interceptors.push((request, next) => { // ... // 请求发送前的处理逻辑 // ... next((response) => { // ... // 请求发送后的处理逻辑 // ... // 根据请求的状态,response参数会返回给successCallback或errorCallback return response }) })

在response返回给successCallback或errorCallback之前,你可以修改response中的内容,或做一些处理。

例如,响应的状态码如果是404,你可以显示友好的404界面。

如果不想使用Lambda函数写法,可以用平民写法:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwdjgp.html