var token = osJs2Java(params)
if (token !== undefined) {
if (typeof token !== Object) {
token = JSON.par(token)
}
tTimeout(resolve, ms, token)
}
})
}
/**
* B模式---刷新token的请求函数
* token失效 js2Java获取token
* @param {*} ms 定时器时间
* */
async function getOsToken4(ms) {
const token = await timeout(ms)
if (token) {
store.dispatch('tToken', token.body.accessToken)
localStorage.tItem('token', token.body.accessToken)
onAccessTokenFetched()
isRefreshing = true
} el {
<('获取客户端返回token失败!')
}
}
/**
* 公共部分缓存失效请求
* @param {*} respon 缓存接⼝参数
* @param {*} neighModel ⼩区模式
*/
function operatePubRequest(respon, neighModel) {
// 刷新token的函数,这需要添加⼀个开关,防⽌重复请求
if (isRefreshing && neighModel === 2) {
getOsToken4(1000)
}
if (isRefreshing && neighModel === 1) {
refreshTokenRequst()
}
isRefreshing = fal
// 这个Promi函数很关键
const retryOriginalRequest = new Promi((resolve) => {
addSubscriber(() => {
const tmpReqData = fig.data
const isFormData = String.call(tmpReqData) === '[object FormData]' if (fig.baURL.lastIndexOf('/res/aa') !== -1) {
resolve(request(
!isFormData ? tmpReqData && JSON.par(tmpReqData).body
// body有参数
{
url: fig.url,
method: hod,
data: JSON.par(tmpReqData).body
ednet
}
// body⽆参数
: {
url: fig.url,
method: hod
}
// FormData格式的图⽚上传
: {
url: fig.url,
method: hod,
data: tmpReqData
}
))
}
关联词大全
if (fig.baURL.lastIndexOf('/res/os') !== -1) {
resolve(osRequest(
tmpReqData && JSON.par(tmpReqData).body
{
url: fig.url,
url: fig.url,
method: hod,
data: JSON.par(tmpReqData).body
}
: {
url: fig.url,
method: hod
}
))
}
})
})
return retryOriginalRequest
}
// Promi函数集合
let subscribers = []
function onAccessTokenFetched() {
subscribers.forEach((callback) => {
callback()
})
subscribers = []绅士风度英文
}
制定英文
function addSubscriber(callback) {
subscribers.push(callback)
}
// request.js公共部分内容
export default function lib(rvice) {
// 请求拦截器
quest.u(
config => {
const header = {
appName: 'app',
dateTime: new Date().getTime(),
ur: 'admin',
language: 'ZH_CN',
rviceName: 'getInfo',
versionId: 'v0.1.1',
token: ken,
refreshToken: '111b59f3d40a3a9698071a88e3df11fb'
}
proud的名词
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
}
}
} el if (isFormData) {cusp
// 不⽤操作
} el {
config.data = {
header: header,
body: cData
}
}
// Do something before request is nt
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
}
)
// 响应拦截器
spon.u(
respon => {
// 10001=访问令牌过期重新获取token
// 10002=刷新令牌过期退出登陆
// 10013=账号已在别处登陆退出登陆
if (sult !== undefined && (de === '10002' || de === '10013')) { if (ighModel === 2) {
// B模式
return operatePubRequest(respon, ighModel)
} el {
// A模式
去那儿if (ElementsByClassName('el-message').length > 0) return
<(ssage)
tTimeout(() => {
const params = {
method: 'winLogout'
}
js2Java(params)
// 此时后端退出登陆接⼝报错误码,直接清除缓存,强制刷新退出登陆
store.dispatch('tToken', '')
store.dispatch('tFreshToken', '')
store.dispatch('tNeighNo', '')
// 清除⼩区号
// 清除所有cookie
deleteCookie()
removeToken()
如何开一个服装店
ject('error')
}, 1000)
}
} el if (sult !== undefined && de === '10001') {
if (ighModel === 2) {
// B模式
return operatePubRequest(respon, ighModel)
} el {
// A模式
return operatePubRequest(respon, ighModel)
}
} el {
return respon
}
},
error => {
if (ssage === 'Request failed with status code 503') {
Message({
message: '操作失败,请检查服务是否连接正常!',
type: 'error',
勒夫数duration: 2 * 1000
})
} el if (String().indexOf('Network Error') !== -1) {
Message({
message: '⽹络异常,请检查⽹络!',
type: 'error',
duration: 2 * 1000
})
} el {
prc
Message({
message: ssage,
type: 'error',
duration: 2 * 1000
})
}
ject(error)
}