YingXingAI/common/http.interceptor.js

99 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 这里的vm就是我们在vue文件里面的this所以我们能在这里获取vuex的变量比如存放在里面的token
// 同时我们也可以在此使用getApp().globalData如果你把token放在getApp().globalData的话也是可以使用的
const install = (Vue, vm) => {
Vue.prototype.$u.http.setConfig({
// baseUrl: 'https://xy.apps.service.zheke.com',
// imgUrl: 'https://xy.apps.service.zheke.com/',
baseUrl: 'http://120.55.234.65:8082',
imgUrl: 'http://120.55.234.65:8082/',
// imgUrl:'http://115.238.47.235:8987/',
// baseUrl: 'http://115.238.47.235:8993',
// 如果将此值设置为true拦截回调中将会返回服务端返回的所有数据response而不是response.data
// 设置为true后就需要在this.$u.http.interceptor.response进行多一次的判断请打印查看具体值
originalData: true,
// 设置自定义头部content-type
// header: {
// 'content-type': 'xxx'
// }
});
// 请求拦截配置Token等参数
Vue.prototype.$u.http.interceptor.request = (config) => {
// config.header.Token = 'xxxxxx';
// 方式一存放在vuex的token假设 https://uviewui.com/components/globalVariable.html
config.header.Authorization = 'Bearer ' + vm.vuex_token;
// 方式二如果没有使用uView封装的vuex方法那么需要使用$store.state获取
// config.header.token = vm.$store.state.token;
// 方式三如果token放在了globalData通过getApp().globalData获取
// config.header.token = getApp().globalData.username;
// 方式四如果token放在了Storage本地存储中拦截是每次请求都执行的所以哪怕您重新登录修改了Storage下一次的请求将会是最新值
// const token = uni.getStorageSync('token');
// config.header.token = token;
// 注释 7/15
// uni.showLoading({
// title: '请求中...'
// });
// 注释
// setTimeout(function () {
// uni.hideLoading();
// }, 2000);
return config;
}
// 响应拦截,判断状态码是否通过
Vue.prototype.$u.http.interceptor.response = (res) => {
// uni.hideLoading();
// 检查是否为401未授权错误
if (res.statusCode === 401) {
handleAuthError(vm);
return false;
}
return res.data;
if (res.succeed == true || res.success == true) {
// return res.data || res;
return res;
} else {
// uni.showToast({
// title: res.error,
// duration: 2000,
// icon: 'none'
// });
// uni.navigateTo({
// url: "/pages/login/login/login",
// });
return false;
}
}
}
// 提取处理401错误的函数
function handleAuthError(vm) {
vm.$u.vuex("vuex_user", "");
vm.$u.vuex("vuex_token", "");
uni.clearStorage();
// 显示提示
uni.showToast({
title: '登录已过期,请重新登录!',
icon: 'none',
duration: 1500
});
// 延迟跳转到登录页
uni.reLaunch({
url: '/pages/login/login/index'
});
}
export default {
install
}