194 lines
5.2 KiB
JavaScript
194 lines
5.2 KiB
JavaScript
|
import Interceptor from "./core/interceptor";
|
|||
|
import Request from "./index";
|
|||
|
import TokenApi from ".././api/token";
|
|||
|
|
|||
|
export const globalInterceptor = {
|
|||
|
request: new Interceptor(),
|
|||
|
response: new Interceptor(),
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* 全局配置
|
|||
|
* 只能配置 静态数据
|
|||
|
* `content-type` 默认为 application/json
|
|||
|
* header 中`content-type`设置特殊参数 或 配置其他会导致触发 跨域 问题,出现跨域会直接进入响应拦截器的catch函数中
|
|||
|
*/
|
|||
|
export const config = {
|
|||
|
// baseURL: "/gyhl",
|
|||
|
baseURL:"http://36.137.58.70:52/gyhl/",
|
|||
|
// baseURL: 'http://120.132.17.220:8888',
|
|||
|
// baseURL: 'http://192.168.1.50:8888',
|
|||
|
// baseURL: "http://36.212.152.5:32/gyhl",
|
|||
|
// baseURL: 'http://192.168.1.56:21925',
|
|||
|
// imgURL:'http://120.132.17.220:18090/',
|
|||
|
imgURL:
|
|||
|
window.location.href.split("//")[0] +
|
|||
|
"//" +
|
|||
|
window.location.href.split("//")[1].split("/")[0] +
|
|||
|
"/",
|
|||
|
dataType: "json",
|
|||
|
responseType: "text",
|
|||
|
method: "POST",
|
|||
|
header: {
|
|||
|
"content-type": "application/json",
|
|||
|
// 'content-type': 'application/x-www-form-urlencoded'
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* 全局 请求拦截器
|
|||
|
* 例如: 配置token
|
|||
|
*
|
|||
|
* `return config` 继续发送请求
|
|||
|
* `return false` 会停止发送请求,不会进入错误数据拦截,也不会进入请求对象中的catch函数中
|
|||
|
* `return Promise.reject('xxxxx')` 停止发送请求, 会错误数据拦截,也会进入catch函数中
|
|||
|
*
|
|||
|
* @param {Object} config 发送请求的配置数据
|
|||
|
*/
|
|||
|
globalInterceptor.request.use(
|
|||
|
(config) => {
|
|||
|
// 显示加载中 效果
|
|||
|
uni.showLoading({
|
|||
|
mask: true,
|
|||
|
});
|
|||
|
config.header.Authorization = getToken();
|
|||
|
return config;
|
|||
|
// return false;
|
|||
|
// return Promise.reject('is error')
|
|||
|
},
|
|||
|
(err) => {
|
|||
|
console.error("is global fail request interceptor: ", err);
|
|||
|
return false;
|
|||
|
}
|
|||
|
);
|
|||
|
|
|||
|
// 支持添加多个请求、响应拦截器
|
|||
|
// globalInterceptor.request.use(config => {
|
|||
|
// console.log('is global request interceptor 2');
|
|||
|
// return config;
|
|||
|
// }, err => {
|
|||
|
// console.error('global request: ', err);
|
|||
|
// return false;
|
|||
|
// });
|
|||
|
|
|||
|
/**
|
|||
|
* 全局 响应拦截器
|
|||
|
* 例如: 根据状态码选择性拦截、过滤转换数据
|
|||
|
*
|
|||
|
* `return res` 继续返回数据
|
|||
|
* `return false` 停止返回数据,不会进入错误数据拦截,也不会进入catch函数中
|
|||
|
* `return Promise.reject('xxxxx')` 返回错误信息, 会错误数据拦截,也会进入catch函数中
|
|||
|
*
|
|||
|
* @param {Object} res 请求返回的数据
|
|||
|
* @param {Object} config 发送请求的配置数据
|
|||
|
* @return {Object|Boolean|Promise<reject>}
|
|||
|
*/
|
|||
|
globalInterceptor.response.use(
|
|||
|
(res, config) => {
|
|||
|
uni.hideLoading();
|
|||
|
if (res.data && res.data.code == 98) {
|
|||
|
// const automatic_logon = uni.getStorageSync('automatic_logon');
|
|||
|
// const loginInfo = uni.getStorageSync('admin_info');
|
|||
|
// if(automatic_logon){
|
|||
|
// //调用接口获取最新的token
|
|||
|
// uni.request({
|
|||
|
// url: config.baseURL+'/apis/user/login', //仅为示例,并非真实接口地址。
|
|||
|
// data: loginInfo,
|
|||
|
// method:'POST',
|
|||
|
// success: (res) => {
|
|||
|
// console.log(res.data);
|
|||
|
// // uni.setStorageSync('userInfo', res.data.userInfo);
|
|||
|
|
|||
|
// }
|
|||
|
// });
|
|||
|
|
|||
|
// this.$http.request({
|
|||
|
// url: '/apis/user/login',
|
|||
|
// params: loginInfo,
|
|||
|
// }).then(res=>{
|
|||
|
// if(res.data.code == 0){
|
|||
|
// uni.setStorageSync('userInfo', res.data.userInfo);
|
|||
|
// }else{
|
|||
|
// uni.showToast({
|
|||
|
// icon: 'none',
|
|||
|
// title: res.data.msg,
|
|||
|
// });
|
|||
|
// }
|
|||
|
// }).catch(err=>{
|
|||
|
// uni.showToast({
|
|||
|
// icon: 'none',
|
|||
|
// title: '重新登陆失败',
|
|||
|
// });
|
|||
|
// });
|
|||
|
// }else{
|
|||
|
//令牌到期,需要重新登陆
|
|||
|
uni.showToast({
|
|||
|
title: res.data.msg,
|
|||
|
duration: 1000,
|
|||
|
icon: "none",
|
|||
|
});
|
|||
|
setTimeout(function () {
|
|||
|
uni.navigateTo({
|
|||
|
url: "/pages/login/login",
|
|||
|
});
|
|||
|
}, 1000);
|
|||
|
// }
|
|||
|
} else {
|
|||
|
return res;
|
|||
|
}
|
|||
|
// 回传数据中没有携带 code
|
|||
|
// if (!(res.data && res.data.code)) {
|
|||
|
// return res;
|
|||
|
// }
|
|||
|
// return Promise.reject('is error')
|
|||
|
},
|
|||
|
(err, config) => {
|
|||
|
uni.showToast({
|
|||
|
title: "连接服务器失败",
|
|||
|
duration: 1000,
|
|||
|
icon: "none",
|
|||
|
});
|
|||
|
const { errMsg, data } = err;
|
|||
|
|
|||
|
return Promise.reject({
|
|||
|
errMsg,
|
|||
|
data,
|
|||
|
config,
|
|||
|
});
|
|||
|
}
|
|||
|
);
|
|||
|
|
|||
|
// 重新请求更新获取 token
|
|||
|
async function getApiToken(uid) {
|
|||
|
const res = await TokenApi.getMockToken(uid);
|
|||
|
const { token } = res.data;
|
|||
|
|
|||
|
return token;
|
|||
|
}
|
|||
|
|
|||
|
// 获取 localStorage 中的 token
|
|||
|
function getToken() {
|
|||
|
try {
|
|||
|
const value = uni.getStorageSync("userInfo");
|
|||
|
if (value) {
|
|||
|
return value.token;
|
|||
|
}
|
|||
|
} catch (e) {
|
|||
|
uni.showToast({
|
|||
|
title: "请先登陆",
|
|||
|
duration: 2000,
|
|||
|
icon: "none",
|
|||
|
});
|
|||
|
setTimeout(function () {
|
|||
|
uni.navigateTo({
|
|||
|
url: "/pages/login/login",
|
|||
|
});
|
|||
|
}, 2000);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 保存 token 到 localStorage
|
|||
|
function saveToken(token) {
|
|||
|
uni.setStorageSync("token", token);
|
|||
|
}
|