import axios from 'axios'
import { AxiosResponse, AxiosRequestConfig } from 'axios';
import { Notification, Message } from '@arco-design/web-react'
// import Cookies from 'js-cookie'
// const moduleType = location.href.split('console/')[1]?.split('/')[0] || 'tenant'
let lastRequest = null;
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
const service = axios.create({
withCredentials: true,
baseURL: `/api`,
timeout: 60000, // request timeout
cancelToken: source.token
})
service.interceptors.request.use(
(config: AxiosRequestConfig) => {
config.headers['x-auth-validate'] = config.data?.headers?.['x-auth-validate'] || 'true'
if (lastRequest && lastRequest.url === config.url && lastRequest.method === config.method && JSON.stringify(lastRequest.params) === JSON.stringify(config.params)) {
// 如果相同,则取消当前请求
return Promise.reject(new Error('Duplicate Request'));
}
// 保存当前请求的信息
lastRequest = {
url: config.url,
method: config.method,
params: config.params
};
return config
},
error => {
console.log(error) // for debug
return Promise.reject(error)
}
)
service.interceptors.response.use(
(response: AxiosResponse) => {
const res = response.data;
if (res.code.toLocaleLowerCase() !== 'success') {
if (res.msg) {
Message.error({
content: res.msg || 'Error',
duration: 3000
});
}
return Promise.reject(res)
} else {
return res
}
},
error => {
let code = 0
try {
code = error.response.data.status ? error.response.data.status : error.response.status
} catch (e) {
if (error.toString().indexOf('Error: timeout') !== -1) {
Notification.error({
title: '网络请求超时',
content: '',
duration: 5000
})
return Promise.reject(error)
}
}
const errorMsg =
error.response.data?.message ||
error.response.data?.msg ||
error.response.data
if (code && (code === 401 || code === 402)) {
window.location.href = `${error.response.data.data.content}?redirect_uri=${encodeURIComponent(window.location.href)}`;
} else if (code && code === 403) {
Message.error(errorMsg)
} else {
throw new Error(`接口请求异常${code}:${errorMsg}`)
}
return Promise.reject(error)
}
)
export default service
![](https://img.haomeiwen.com/i9405405/557527d7548f2d54.png)
0802.png
网友评论