java-mall-app/helpers/HttpResource.js
2024-11-01 16:35:40 +08:00

74 lines
1.9 KiB
JavaScript

import __config from '../config/config'
import WxResource from 'WxResource'
class HttpResource {
constructor(url, paramDefaults, actions, options) {
Object.assign(this, {
url,
paramDefaults,
actions,
options,
})
}
/**
* 返回实例对象
*/
init() {
const resource = new WxResource(this.setUrl(this.url), this.paramDefaults, this.actions, this.options)
resource.setDefaults({
interceptors: this.setInterceptors()
})
return resource
}
/**
* 设置请求路径
*/
setUrl(url) {
return `${__config.basePath}${url}`
}
/**
* 拦截器
*/
setInterceptors() {
return [{
request: (request) => {
request.header = request.header || {}
request.requestTimestamp = new Date().getTime()
if (request.url.indexOf('/api') !== -1 && uni.getStorageSync('token')) {
request.header.Authorization = 'Bearer ' + uni.getStorageSync('token')
}
uni.showToast({
title: '加载中',
icon: 'loading',
duration: 10000,
mask: !0,
})
return request
},
requestError: (requestError) => {
uni.hideToast()
return requestError
},
response: (response) => {
response.responseTimestamp = new Date().getTime()
if(response.statusCode === 401) {
uni.removeStorageSync('token')
uni.redirectTo({
url: '/pages/login/index'
})
}
uni.hideToast()
return response
},
responseError: (responseError) => {
uni.hideToast()
return responseError
},
}]
}
}
export default HttpResource