record yourself
ccommon folder request.js file
const BASE_URL = 'https://*****'
export const request = (options) => {
// 在这里可以对请求头进行一些设置
// 例如:
return new Promise((resolve, reject) => {
uni.request({
url: BASE_URL + options.url || '',
method: options.method || 'GET',
data: options.data || {},
header: options.header || {
// 根据实际接口设计 key 取 token 或者 authorization
'token': uni.getStorageSync('token_key')
},
success: (res) => {
// console.log(res.data); // 控制台显示数据信息
resolve(res)
if(res.data.code == 401){
uni.showToast({
title: '您未登录请登录操作',
duration: 2000,
icon: 'none',
success: () => {
setTimeout(() => {
uni.reLaunch({
url: '/pages/login/login'
})
}, 1000)
}
});
return;
}else{
uni.request({
url: 'https://******', //检查token时间
method: 'GET',
data: {
token: uni.getStorageSync('token_key')
},
success: (res) => {
// console.log(res.data);
console.log("time=>", res.data.data.expires_in)
if (res.data.data.expires_in < 86400 ) {
console.log('刷新token')
// 刷新token
uni.request({
url: 'https://*******', //刷新token
data: {
token: uni.getStorageSync('token_key')
},
success: (res) => {
console.log(res.data);
uni.setStorageSync('token_key', res.data.data.token)
console.log('刷新完无需跳转页面')
}
});
}
}
});
}
},
fail: (err) => {
// 页面中弹框显示失败
uni.showToast({
title: '请求接口失败',
icon: "none"
})
// 返回错误消息
reject(err)
},
catch: (e) => {
console.log(e);
}
})
});
}
main.js page
//封装请求
import {request} from 'common/request.js'
Vue.prototype.$request = request //挂载vue的原型上,全局可以使用
page use
this.$request({
url: '/sys/version',
data: {
},
}).then(res => {
console.log(res)
})