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

159 lines
3.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}