You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.5 KiB
105 lines
2.5 KiB
const BASE_URL = "http://192.168.43.6:8888"
|
|
const request = (options) => {
|
|
|
|
const header = options.header||{};
|
|
const accessToken = uni.getStorageSync("accessToken");
|
|
if (accessToken) {
|
|
header.accessToken = accessToken;
|
|
}
|
|
return new Promise(function(resolve, reject) {
|
|
uni.request({
|
|
url: BASE_URL + options.url,
|
|
method: options.method || 'GET',
|
|
header: header,
|
|
data: options.data || {},
|
|
async success(res) {
|
|
if (res.data.code == 200) {
|
|
return resolve(res.data.data)
|
|
} else if (res.data.code == 400) {
|
|
uni.navigateTo({
|
|
url: '/pages/login/login'
|
|
});
|
|
} else if (res.data.code == 401) {
|
|
console.log("token失效,尝试重新获取")
|
|
const refreshToken = uni.getStorageSync("refreshToken");
|
|
if (!refreshToken) {
|
|
uni.navigateTo({
|
|
url: '/pages/login/login'
|
|
});
|
|
}
|
|
// 发送请求, 进行刷新token操作, 获取新的token
|
|
const data = await request({
|
|
method: 'PUT',
|
|
url: '/refreshToken',
|
|
header: {
|
|
refreshToken: refreshToken
|
|
}
|
|
})
|
|
// 换取token失败,跳转至登录界面
|
|
if(data.code != 200){
|
|
uni.navigateTo({
|
|
url: '/pages/login/login'
|
|
});
|
|
}
|
|
// 保存token
|
|
uni.setStorageSync("accessToken", data.accessToken);
|
|
uni.setStorageSync("refreshToken", data.refreshToken);
|
|
// 这里需要把headers清掉,否则请求时会报错,原因暂不详...
|
|
//response.config.headers=undefined;
|
|
// 重新发送刚才的请求
|
|
return request(options)
|
|
} else {
|
|
uni.showToast({
|
|
icon: "error",
|
|
title: res.data.message,
|
|
duration: 1500
|
|
})
|
|
return reject(res.data.data)
|
|
}
|
|
},
|
|
fail(error) {
|
|
switch (error.response.status) {
|
|
case 400:
|
|
uni.showToast({
|
|
title: error.response.data,
|
|
type: 'error',
|
|
duration: 1500,
|
|
|
|
})
|
|
break
|
|
case 401:
|
|
uni.navigateTo({
|
|
url: '/pages/login/login'
|
|
});
|
|
break
|
|
case 405:
|
|
uni.showToast({
|
|
title: 'http请求方式有误',
|
|
icon: 'error',
|
|
duration: 1500
|
|
})
|
|
break
|
|
case 404:
|
|
case 500:
|
|
uni.showToast({
|
|
title: '服务器出了点小差,请稍后再试',
|
|
icon: 'error',
|
|
duration: 1500
|
|
})
|
|
break
|
|
case 501:
|
|
uni.showToast({
|
|
title: '服务器不支持当前请求所需要的某个功能',
|
|
icon: 'error',
|
|
duration: 1500
|
|
})
|
|
break
|
|
}
|
|
|
|
return reject(error)
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
export default request;
|