vue_h5_tools
Version:
vue h5 开发小工具
70 lines (68 loc) • 2.15 kB
JavaScript
import Vue from 'vue'
import auth from './auth'
function init() {
const baseUrl = process.env.NODE_ENV === 'development' ? Vue.$h5.devel_api_path : Vue.$h5.prod_api_path
const noAlertStatus = [200, 401]
// 添加请求拦截器
Vue.axios.interceptors.request.use(
config => {
// console.log('开始请求')
const token = auth.get_api_token()
config.baseURL = baseUrl
if (token) {
config.headers['Authorization'] = 'Bearer ' + token
config.headers['Accept'] = 'application/json'
}
// 在发送请求之前做些什么
Promise.resolve()
return config
},
error => {
console.log(error) // for debug
Promise.reject(error)
return false
}
)
// 添加响应拦截器
Vue.axios.interceptors.response.use(
response => {
let res
if (!response.config) {
// 由于axios出错两次返回的响应问题,第二次返回会把第一次的return data传给第二次rresponse
// 所以这里强制返回第一次的响应数据
const n = Vue.$h5.axiso_res.length - 1
res = Vue.$h5.axiso_res[n]
} else {
res = response
}
const code = res.data.code ? res.data.code : res.code
const data = res.data.data ? res.data.data : null
const message = res.data.message ? res.data.message : res.message
Vue.$h5.axiso_res.push(response)
if (code === 401) {
let url = process.env.NODE_ENV === 'development' ? Vue.$h5.devel_wechat_auth_path : Vue.$h5.prod_wechat_auth_path
url += '?redirect_url=' + encodeURIComponent(location.href)
if (location.href.indexOf('ticket=') === -1) {
location.href = url
}
} else if (noAlertStatus.indexOf(code) === -1) {
Vue.prototype.$alert(message)
} else {
return data
}
return false
},
error => {
const message = error.response.data.message
console.log('err' + error) // for debug
Vue.prototype.$message({
message: error
})
Promise.reject(error)
return false
}
)
}
export default {
init
}