vue-resource拦截器
拦截器能做什么?
- 过滤重复请求
- 添加loading动画
- 统一添加header
- 统一处理异常信息
下面是一个简单的拦截器案例
import Vue from 'vue'
import VueResource from 'vue-resource'
Vue.use(VueResource)
const httpLockArr = {} //请求锁,避免同一条请求重复发送
Vue.http.interceptors.push(function (request, next) {
let lastRequest = httpLockArr[request.url]
request.url = Vue.prototype.base_url+request.url
if (lastRequest) {
return false
}
httpLockArr[request.url] = request
//请求头设置
request.headers.set('Content-Type', 'application/json;charset=utf-8')
next(function (response) {
httpLockArr[request.url] = null
if (response.ok) {
let data = response.data
if (data.code == 0) {
response.data = data.data
} else if (data.code == 304) {
alert('页面重定向')
}else if(data.code == '401'){
alert('根据需要处理')
} else {
showToast(data.msg, 2000)
response.ok = false
}
return response
} else {
}
})
})