import store from '@/store'
import config from './config.js'
import Base64 from './base64.js'
// H5版本
// #ifdef H5
import Fly from "flyio/dist/npm/fly"
// #endif
//微信小程序和APP版本
// #ifndef H5
import Fly from "flyio/dist/npm/wx"
// #endif
const request = new Fly();
let base64 = new Base64();
console.log(request)
request.interceptors.request.use((request) => {
request.baseURL = config.baseURL;
const token = store.state.user.token;
request.headers['Authorization'] = `Basic ${base64.encode(`${config.clientId}:${config.clientSecret}`)}`;
if (token) {
request.headers['Blade-Auth'] = 'bearer ' + token
} else {
request.headers['Tenant-Id'] = config.tenantId
}
if (request.method === 'POST' && request.headers['Content-Type'] !== 'multipart/form-data') {
uni.showLoading({});
request.body = {
...request.body,
_t: Date.parse(new Date()) / 1000
}
} else if (request.method === 'GET') {
request.params = {
_t: Date.parse(new Date()) / 1000,
...request.params
}
}
return request
})
let isRefreshing = false;
let requests = [];
request.interceptors.response.use(response => {
uni.hideLoading()
return response.data
}, error => {
uni.hideLoading()
if (error.response.data.code == 401) {
if (!isRefreshing) {
isRefreshing = true
store.dispatch('refreshToken').then(res => {
if (res.access_token) {
requests.forEach(cb => {
console.log(cb)
cb()
})
requests = []
}else{
}
})
isRefreshing = false
} else {
return new Promise((resolve) => {
requests.push(() => {
resolve(request())
})
})
}
}
})
export default request
export {
request
}
refreshToken
最新推荐文章于 2023-05-03 10:51:36 发布