UNPKG

vue_h5_tools

Version:
70 lines (68 loc) 2.15 kB
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 }