Vue.js Ajax(vue-resource)
Vue.js Ajax(vue-resource)技术文档
Ajax是异步JavaScript和XML的缩写,它通过在后台与服务器进行少量数据交换,实现页面无需重新加载即可更新部分内容,这样可以提高用户体验度。Vue.js中使用vue-resource实现Ajax请求,以下是关于vue-resource的详细文档。
安装和引用Vue-resource
Vue-resource是Vue.js的插件,需要通过npm安装,使用npm install vue-resource
进行安装。
在Vue.js中引用vue-resource有两种方式,一种是全局引用,另一种是组件内引用。全局引用需要在Vue根实例中调用Vue.use(VueResource)
,而组件内引用则可以直接在组件中使用。以下是全局引用和组件内引用的具体实现。
全局引用:
import Vue from 'vue'
import VueResource from 'vue-resource'
Vue.use(VueResource)
组件内引用:
import VueResource from 'vue-resource'
export default {
components: {
...
},
data() {
return {
...
}
},
methods: {
fetchData() {
this.$http.get('/api/data').then(response => {
console.log(response.body)
})
},
...
}
}
使用Vue-resource发送Ajax请求
Vue-resource支持所有的HTTP请求方法,包括GET、POST、PUT、DELETE、PATCH等请求,这里以GET请求为例进行展示。
this.$http.get('/api/data').then(response => {
console.log(response.body)
})
以上代码是通过get方法请求后端接口,并将返回的数据response.body输出到控制台。如果有需要传递参数的情况,Vue-resource提供了多种传参方式。
拼接URL
使用get方法时,可以直接将参数拼接在URL上,例如:
this.$http.get('/api/data?id=123&name=Tom').then(response => {
console.log(response.body)
})
使用Params
使用params属性传递参数:
this.$http.get('/api/data', {
params: {
id: 123,
name: 'Tom'
}
}).then(response => {
console.log(response.body)
})
使用Data
使用data属性传递参数:
this.$http.post('/api/submit', {
id: 123,
name: 'Tom'
}).then(response => {
console.log(response.body)
})
使用Headers
使用Vue-resource发送请求时,可以设置headers来配置请求头:
this.$http.get('/api/data', {
headers: {
Authorization: 'Bearer ' + this.$store.state.token
}
}).then(response => {
console.log(response.body)
})
取消一个请求
在实际开发中,有时候我们需要取消一个正在发送的请求,Vue-resource提供了该功能:
let request = this.$http.get('/api/data')
request.then(response => {
console.log(response.body)
})
// 取消请求
request.abort()
拦截器
Vue-resource允许用户定制请求和响应拦截器,以实现对请求和响应的全局处理:
Vue.http.interceptors.push((request, next) => {
// 在请求发送前做一些处理
request.headers.set('Authorization', 'Bearer ' + this.$store.state.token)
next(response => {
// 在请求返回后做一些处理
console.log(response.body)
})
})
应用示例
import Vue from 'vue'
import VueResource from 'vue-resource'
Vue.use(VueResource)
export default {
data() {
return {
data: null
}
},
methods: {
fetchData() {
this.$http.get('/api/data', {
params: {
id: 123,
name: 'Tom'
},
headers: {
Authorization: 'Bearer ' + this.$store.state.token
}
}).then(response => {
this.data = response.body
})
},
...
}
}
以上是一个基于Vue-resource实现Ajax请求的示例。通过这个示例,我们可以发现Vue-resource非常易用,而且能实现全局请求拦截、取消请求、配置请求头等实用功能,对于Vue.js项目的开发和维护有很大的帮助。