import Request from '../../utils/my-request/index.js' //w3 wifi // let baseURL='http://192.168.0.105:9527/' //w2 wifi // let baseURL='http://192.168.0.101:9527/' //思奇特 // let baseURL='http://192.168.2.200:9527/' //远程 // let baseURL='http://139.9.103.171:9527/' let baseURL='https://park.58fo.com/api/' let tokenUrl=baseURL+"blade-auth/oauth/token?tenantId=804981&password=ea3c40c0df5477c525543b0e85548004&username=wpadmin" //获取token const getTokenStorage = () => { let token = '' try { token = uni.getStorageSync('token') } catch (e) { } return token } const http = new Request() http.setConfig((config) => { /* 设置全局配置 */ config.baseURL = baseURL /* 根域名不同 */ config.header = { ...config.header, } return config }) http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */ config.header = { ...config.header, "Blade-Auth": getTokenStorage() } return config }, (config) => { return Promise.reject(config) }) // 是否正在刷新的标记 let isRefreshing = false // 重试队列,每一项将是一个待执行的函数形式 let requests = [] http.interceptors.response.use(async (response) => { /* 请求之后拦截器。可以使用async await 做异步操作 */ //toekn过期处理 if (response.data.code == 401) { let {config} = response if (!isRefreshing) { isRefreshing = true let token = uni.getStorageSync('token') let [,res] = await uni.request({ url: tokenUrl, method: 'POST', header:{ Authorization:"Basic c2FiZXI6c2FiZXJfc2VjcmV0" }, }) //否则保存新的token token=res.data.token_type+" "+res.data.access_token uni.setStorageSync('token', token) requests.forEach(cb => cb()) // 重试完了清空这个队列 requests = [] isRefreshing = false return http.request(config) } else { return new Promise((resolve) => { // 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行 requests.push(() => { resolve(http.request(config)) }) }) } } //200 返回数据成功 0 上传文件成功 400 没有相关数据 if (response.data.code != 200 && response.data.code !=400 && response.data.code !=0) { return Promise.reject(response) } return response.data }, (err) => { // 请求错误做点什么 uni.showToast({ icon: 'none', position: 'bottom', title: '网络异常' }) return err }) export { http }