import axios from 'axios'
import {message} from 'antd';
import {API_URL} from '../utils/urlHead'
import md5 from 'js-md5'
import Func from '../utils/common'
axios.defaults.withCredentials = true;
let cacheEffectTime = 1000;
let cache = new Proxy({},{
set(target, p,value) {
target[p] = value;
setTimeout(()=>{
delete target[p];
},cacheEffectTime);
return true
},
get: function(target, key, receiver){
return target[key];
}
})
function axiosRequest(url, method, params) {
let paramsToken = url;
if (params&&!Func.isEmptyObject(params)){
paramsToken = paramsToken + JSON.stringify(params)
paramsToken = md5(paramsToken)
}
if(paramsToken&&cache[paramsToken]){
return cache[paramsToken]
} else {
const headers = {
paramsToken
};
if(sessionStorage.getItem('xxx')){
headers.xxx = sessionStorage.getItem('xxx');
}
let res = new Promise((resolve, reject) => {
axios({
method: method,
url: url,
params: method && method.toLowerCase() === 'get' && params,
data: params,
headers: headers
}).then(res => {
if (parseInt(res.data.code) === 200) {
resolve(res.data)
} else {
if (res.data.code == -100) {
if (API_URL === 'http://localhost:8091') {
} else {
}
} else {
const code = res.data.code || res.status;
const errorMsg = res.data.msg || res.data.message || res.error;
message.error(`错误代码${code}: ${errorMsg}`, 5)
if(res.status == 207){
resolve(res.data);
}
}
reject(res.data?.code || res.status);
}
}).catch(err => {
if(err.response.status === 401){
top.location.href = '/xxx'
}
reject(err)
})
})
cache[paramsToken] = res;
return res
}
}
export default axiosRequest