uniapp中请求的封装工具类
function request(params, isGetTonken, queuePassby) {
let globalData = getApp().globalData;
if (!isGetTonken && globalData.isLanding && !queuePassby) {
console.log('正在登录,缓存请求: ' + params.url)
globalData.requestQueue.push(params);
return;
}
if (Object.prototype.toString.call(params.data) == '[object Array]') {
params.data = JSON.stringify(params.data);
} else if (Object.prototype.toString.call(params.data) == '[object Number]') {
params.data = `${params.data}`;
}
let isObject = Object.prototype.toString.call(params.data) === '[object Object]';
params.data = isObject ?
params.data ? Object.assign(params.data, {
info: JSON.stringify(util.genInfo()),
}) : {
info: JSON.stringify(util.genInfo()),
}
: params.data;
const url = (params.domain ? params.domain : config.domain) + params.url
wx.request({
url: url,
data: params.data,
header: {
Authorization: uni.getStorageSync('token') || uni.getStorageSync('tempToken'),
locale: wx.getStorageSync('lang') || 'zh_CN',
},
method: params.method == undefined ? 'POST' : params.method,
dataType: 'json',
responseType: params.responseType == undefined ? 'text' : params.responseType,
success(res) {
if (res.statusCode == 200) {
if (params.callBack) {
params.callBack(res.data);
}
} else if (res.statusCode == 500) {
if (params.errCallBack) {
params.errCallBack(res);
}
uni.hideLoading();
setTimeout(() => {
uni.showToast({
title: i18n.t('index.serverWrong'),
icon: 'none',
});
}, 1);
} else if (res.statusCode == 401) {
if (params.errCallBack) {
params.errCallBack(res);
}
uni.removeStorageSync('loginResult');
uni.removeStorageSync('token');
const ua = navigator.userAgent.toLowerCase();
if (ua.search(/MicroMessenger/i) > -1) {
uni.setStorageSync('appType', AppType.MP);
}
let canAutoLogin = uni.getStorageSync('hadBindUser') && uni.getStorageSync('hadLogin');
if (canAutoLogin) {
let lastAutoLoginTime = uni.getStorageSync('lastAutoLoginTime');
if ((new Date().getTime() - lastAutoLoginTime) / 1000 / 60 < 1) {
console.log('自动登录过于频繁,hold...')
canAutoLogin = false;
}
}
if (canAutoLogin) {
console.log('global: ', globalData.isLanding);
if (!globalData.isLanding) {
globalData.isLanding = true;
console.log('401 autologin.....', params.url)
wx.login({
success: (res) => {
uni.setStorageSync('lastAutoLoginTime', new Date().getTime());
appLogin(res.code, 1, params, true, queuePassby);
},
complete: () => {
globalData.isLanding = false;
}
});
} else if (!queuePassby) {
console.log('不调用自动登录,缓存请求: ' + params.url)
globalData.requestQueue.push(params);
}
} else {
_401callback(params);
}
uni.hideLoading();
uni.hideLoading();
_401callback(params);
} else if (res.statusCode == 400 && !params.errCallBack) {
uni.hideLoading();
setTimeout(() => {
console.log(res.data);
uni.showToast({
title: typeof(res.data) == 'string' ? res.data : '网络繁忙: 400',
icon: 'none',
});
}, 1);
} else {
if (params.errCallBack) {
params.errCallBack(res);
}
uni.hideLoading();
}
},
fail(err) {
uni.hideLoading();
setTimeout(() => {
uni.showToast({
title: i18n.t('index.serverWrong'),
icon: 'none',
});
}, 1);
},
});
}
exports.request = request;
上传文件统一接口工具类
function upload(params) {
wx.uploadFile({
url: config.domain + params.url,
filePath: params.filePath,
name: params.name,
header: {
Authorization: params.login ? undefined : wx.getStorageSync('token'),
},
dataType: 'json',
responseType: params.responseType == undefined ? 'json' : params.responseType,
success(res) {
if (res.statusCode == 200) {
if (params.callBack) {
params.callBack(res.data);
}
} else {
uni.showToast({
title: i18n.t('index.serverWrong'),
icon: 'none',
});
}
},
fail(err) {
uni.hideLoading();
},
});
}
exports.upload = upload;