var token = osJs2Java(params)
if (token !== undefined) {
if (typeof token !== Object) {
token = JSON.parse(token)
}
setTimeout(resolve, ms, token)
}
})
}
/**
* B模式---刷新token的请求函数
* token失效 js2Java获取token
* @param {*} ms 定时器时间
* */
async function getOsToken4(ms) {
const token = await timeout(ms)
if (token) {
store.dispatch('setToken', token.body.accessToken)
localStorage.setItem('token', token.body.accessToken)
onAccessTokenFetched()
isRefreshing = true
} else {
<('获取客户端返回token失败!')
}
}
/**
* 公共部分缓存失效请求
* @param {*} response 缓存接⼝参数
* @param {*} neighModel  ⼩区模式
*/
function operatePubRequest(response, neighModel) {
// 刷新token的函数,这需要添加⼀个开关,防⽌重复请求
if (isRefreshing && neighModel === 2) {
getOsToken4(1000)
}
if (isRefreshing && neighModel === 1) {
refreshTokenRequst()
}
isRefreshing = false
// 这个Promise函数很关键
const retryOriginalRequest = new Promise((resolve) => {
addSubscriber(() => {
const tmpReqData = fig.data
const isFormData = String.call(tmpReqData) === '[object FormData]'      if (fig.baseURL.lastIndexOf('/res/aa') !== -1) {
resolve(request(
!isFormData ? tmpReqData && JSON.parse(tmpReqData).body
// body有参数
{
url: fig.url,
method: hod,
data: JSON.parse(tmpReqData).body
}
// body⽆参数
: {
url: fig.url,
method: hod
}
// FormData格式的图⽚上传
: {
url: fig.url,
method: hod,
data: tmpReqData
}
))
}
if (fig.baseURL.lastIndexOf('/res/os') !== -1) {
resolve(osRequest(
tmpReqData && JSON.parse(tmpReqData).body
{
url: fig.url,
url: fig.url,
method: hod,
data: JSON.parse(tmpReqData).body
}
: {
url: fig.url,
method: hod
}
))
}
})
})
return retryOriginalRequest
}
// Promise函数集合
let subscribers = []
function onAccessTokenFetched() {
subscribers.forEach((callback) => {
callback()
})
subscribers = []
}
function addSubscriber(callback) {
subscribers.push(callback)
}
// request.js公共部分内容
export default function lib(service) {
// 请求
quest.use(
config => {
const header = {
appName: 'app',
dateTime: new Date().getTime(),
user: 'admin',
language: 'ZH_CN',
serviceName: 'getInfo',
versionId: 'v0.1.1',
token: ken,
refreshToken: '111b59f3d40a3a9698071a88e3df11fb'
}
const cData = config.data
const isObj = String.call(cData) === '[object Object]'
const isFormData = String.call(cData) === '[object FormData]'      const isArr = String.call(cData) === '[object Array]'
if (isObj && !isArr) {
config.data = {
header: header,
body: {
...cData
}
}
} else if (isFormData) {
// 不⽤操作
} else {
config.data = {
header: header,
body: cData
}
}
// Do something before request is sent
if (ken) {
// 让每个请求携带token-- ['Authorization']为⾃定义key 请根据实际情况⾃⾏修改        config.headers['Authorization'] = 'Bearer ' + ken
// 让每个请求携带token-- ['X-Token']为⾃定义key 请根据实际情况⾃⾏修改
// config.headers['X-Token'] = getToken()
}
return config
},
error => {
// Do something with request error
}
)
// 响应
sponse.use(
response => {
// 10001=访问令牌过期重新获取token
// 10002=刷新令牌过期退出登陆
// 10013=账号已在别处登陆退出登陆
if (sult !== undefined && (de === '10002' || de === '10013')) {        if (ighModel === 2) {
// B模式
return operatePubRequest(response, ighModel)
} else {
// A模式
if (ElementsByClassName('el-message').length > 0) return
<(ssage)
setTimeout(() => {
const params = {
method: 'winLogout'
}
js2Java(params)
// 此时后端退出登陆接⼝报错误码,直接清除缓存,强制刷新退出登陆
store.dispatch('setToken', '')
store.dispatch('setFreshToken', '')
store.dispatch('setNeighNo', '')
// 清除⼩区号
// 清除所有cookie
deleteCookie()
removeToken()
ject('error')
}, 1000)
}
} else if (sult !== undefined && de === '10001') {
if (ighModel === 2) {
// B模式
return operatePubRequest(response, ighModel)
} else {
// A模式
service faultreturn operatePubRequest(response, ighModel)
}
} else {
return response
}
},
error => {
if (ssage === 'Request failed with status code 503') {
Message({
message: '操作失败,请检查服务是否连接正常!',
type: 'error',
duration: 2 * 1000
})
} else if (String().indexOf('Network Error') !== -1) {
Message({
message: '⽹络异常,请检查⽹络!',
type: 'error',
duration: 2 * 1000
})
} else {
Message({
message: ssage,
type: 'error',
duration: 2 * 1000
})
}
ject(error)
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。