import ENV_CONFIG from '@/.env.js' // api前缀 export const HTTP_URL_DEV_PREFIX = '/api' export const HTTP_URL_PROD_PREFIX = '/api' const env = ENV_CONFIG[process.env.ENV_TYPE || 'dev']; // 基于uview-ui的http配置 export const UVIEWUI_HTTP_CONFIG = { // 地址 baseUrl: env.apiUrl + env.apiUrlPrefix, // 请求方式 method: 'post', // 参数类型 dataType: 'json', // 是否显示请求中的loading showLoading: true, // 请求loading中的文字提示 loadingText: '请求中...', // 在此时间内,请求还没回来的话,就显示加载中动画,单位ms loadingTime: 800, // 是否在拦截器中返回服务端的原始数据 originalData: true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透 loadingMask: true, // header:{ // token:uni.getStorageSync('token') // }, } // 此处配置请求拦截器 export const httpRequest = (config) => { console.log('请求拦截器>>>>>', config); const token = uni.getStorageSync('token'); console.log('token>>>>>', token); config.header.Authorization = token ? `Bearer ${token}` : '' return config; } // 此处配置响应拦截器 export const httpResponse = (res) => { return new Promise(function(resolve, reject) { if (res.statusCode == 200) { console.log('成功>>>>'); if (res.data.code == 0) { uni.showToast({ icon: 'none', title: res.data.msg }) return reject(res.data); } if (res.data.code == 401) { console.log('接口未登录>>>>401'); // 未登录 uni.removeStorageSync('token'); uni.navigateTo({ url: '/pages/login/index' }) return reject(res.data); } return resolve(res.data); } if (res.statusCode == 401) { console.log('未登录>>>>'); // 未登录 uni.navigateTo({ url: '/pages/login/index' }) uni.removeStorageSync('token'); return reject(res.data); } if (res.statusCode == 500) { console.log('服务器异常>>>>500'); uni.showToast({ title: '服务器异常,请联系客服!', icon: 'none', duration: 3000 }) return reject(res.data); } return resolve(res.data); }) } // http安装方法 export const installHttpConfig = (Vue, vm) => { Vue.prototype.$u.http.setConfig(UVIEWUI_HTTP_CONFIG); Vue.prototype.$u.http.interceptor.request = httpRequest Vue.prototype.$u.http.interceptor.response = httpResponse }