sl-express/project-wl-yonghuduan-uniap.../utils/request.js

159 lines
3.6 KiB
JavaScript
Raw Permalink Normal View History

2023-09-04 16:40:17 +08:00
import {
baseUrl,
notToLoginApiUrl
} from './env'
import {
resetToken
} from '@/pages/api/login.js'
// 参数: url:请求地址 param请求参数 method请求方式 callBack回调函数
export function request({
url = '',
params = {},
method = 'GET'
}) {
// 获取token短令牌
const token = uni.getStorageSync('token')
//获取长令牌
const refreshToken = uni.getStorageSync('refreshToken')
const header = {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json;charset=UTF-8',
'access_token': token
}
let refreshHeader = {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json;charset=UTF-8',
'refresh_token': refreshToken
}
console.log(url, 'url')
const requestRes = new Promise((resolve, reject) => {
let requestFunc = ''
uni.request({
timeout:20000,
url: baseUrl + url,
data: params,
header: url === '/user/refresh' ? refreshHeader : header,
method: method,
success: (res) => {
const {
data
} = res
if (data.code == 0 || data.code == 200) {
resolve(res.data)
} else {
console.log(res, '112233')
// resolve(res.data)
handleError(res, resolve, url, params, method)
}
},
fail: (err) => {
const error = {
data: {
msg: err.data
}
}
reject(error)
}
})
})
const handleError = (error, resolve, url, params, method) => {
var errorCode = error.statusCode;
if (errorCode == 401) {
if (token && refreshToken) {
//刷新token
resetToken().then((res) => {
console.log(res, 'resetToken')
if (res.code === 200) {
uni.setStorageSync('token', res.data.accessToken);
uni.setStorageSync('refreshToken', res.data.refreshToken);
//当重新刷新短token的时候重新执行上一个401的接口保证页面的无感正常交互
let newHeader = {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json;charset=UTF-8',
'access_token': uni.getStorageSync('token')
}
uni.request({
url: baseUrl + url,
data: params,
header: newHeader,
method: method,
success: (res) => {
const {
data
} = res
if (data.code == 0 || data.code == 200) {
resolve(res.data)
} else {
resolve()
uni.showToast({
title: res.msg || '网络异常',
duration: 2000,
icon: 'none',
});
}
},
fail: (err) => {
const error = {
data: {
msg: err.data
}
}
reject(error)
}
})
} else if (res.data.code === 1) {
console.log(1, res)
uni.removeStorageSync('token')
uni.removeStorageSync('refreshToken')
uni.showToast({
title: res.data.msg || '刷新token失败请重新登录.',
icon: "none",
duration: 1000,
success: () => {
setTimeout(() => {
uni.navigateTo({
url: '/pages/login/index'
});
}, 2000)
},
fail: () => {}
});
}
}).catch((err) => {
uni.showToast({
title: '网络异常',
duration: 2000,
icon: 'none'
});
})
}
} else if (errorCode == 500) {
if (uni.getStorageSync("token") == "") {
uni.showToast({
title: "请先登录",
icon: "none",
duration: 2000,
success: () => {
},
fail: () => {
}
});
} else {
uni.showToast({
title: error.data.error.message + "",
icon: "none",
duration: 3000
});
}
} else {
resolve(error)
}
}
return requestRes
}