http请求的封装
function request(url, method, data, slient) {
return new Promise((resolve, reject) => {
// 如果不希望出现加载中提示框,使用将slient修改为true
let loadingClose = slient ? () => {} : loading.loadingOpen();
uni.request({
url: uni.baseUrl + url,
method: method,
data: data,
header: storage.getToken(),
success: (res) => {
loadingClose();
let status = res.statusCode;
switch (status) {
case 200:
// 200正常返回
return resolve(res.data);
case 400:
// 400属于业务错误,留给业务代码处理
return resolve(res.data);
case 401:
// 401 没token
uni.showToast({
icon: 'none',
title: '请先登录!'
}, 100);
setTimeout(() => {
uni.navigateTo({
url: utils.loginUrl()
});
}, 1000);
break;
case 403:
uni.showToast({
icon: 'none',
title: '无权限操作!'
}, 100);
return reject(res);
case 500:
// 后台业务错误
uni.showToast({
icon: 'none',
title: res.data.message
});
return resolve(res.data);
case 503:
// 后台业务错误
uni.showToast({
icon: 'none',
title: res.data.message
});
break;
default:
uni.showToast({
icon: 'none',
title: '连接登录超时!'
});
}
},
fail: (res) => {
loadingClose();
uni.showToast({
icon: 'none',
title: '内部错误,请联系网站维护人员!'
});
console.error(res);
}
});
});
}
//控制loading
loadingOpen (time = 500) {
let isOpen = false;
let timer = setTimeout(() => {
isOpen = true;
uni.showLoading({
title: '加载中..'
});
}, time);
return function () {
clearTimeout(timer);
if (isOpen) {
uni.hideLoading();
}
};
}