耀实惠小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

67 lines
1.9 KiB

import Request from './request'
import apiList from './shopro'
import utils from '@/utils/utils.js'
// import store from '@/common/store/index.js'
import { TOKEN_HEADER_NAME } from '@/config/settings.js'
import { storageKeys, storage } from '@/utils/storage.js'
export default function api(url, data = {}) {
const request = new Request();
let api = getApiObj(url);
request.interceptor.request((config, cancel) => { /* 请求之前拦截器 */
let userToken = storage.getStorage(storageKeys.TOKEN) || ''
if (api.auth) {
if (!userToken) {
console.log(config)
// 去登录
utils.loginModal('您还未登录,请进行登录!')
throw('暂未登录,已阻止此次API请求~');
}
}
if (userToken) {
config.header[TOKEN_HEADER_NAME] = storage.getStorage(storageKeys.TOKEN)
}
return config
});
request.interceptor.response((response) => { /* 请求之后拦截器 */
// if (response.data.code === 0) { // 服务端返回的状态码不等于200,则reject()
// uni.showToast({
// title: response.data.msg || '请求出错,稍后重试',
// icon: 'none',
// duration: 1000,
// mask: true
// });
// }
if (response.data.code === 401 || response.data.message.indexOf('Token失效') > -1) { // 服务端返回的状态码不等于200,则reject()
uni.hideLoading()
utils.loginModal('登录过期,请重新登录!')
return
}
// if (response.config.custom.verification) { // 演示自定义参数的作用
// return response.data
// }
return response
}, (response) => { // 预留可以日志上报
return response
})
let option = {
url: api.url,
data,
method: api.method
}
if (api.headers!=null){
option.header = api.headers
}
return request.request(option)
}
function getApiObj(url) {
let apiArray = url.split(".");
let api = apiList;
apiArray.forEach(v => {
api = api[v];
});
return api;
}