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.
119 lines
2.3 KiB
119 lines
2.3 KiB
import Axios from 'axios'
|
|
import { message } from 'antd'
|
|
import { store } from '@/store'
|
|
import { HashRouter } from 'react-router-dom'
|
|
|
|
interface AxiosConfig {
|
|
baseURL: string;
|
|
timeout: number;
|
|
headers: {
|
|
'Content-Type': string
|
|
};
|
|
}
|
|
|
|
export const getBaseUrl = () => {
|
|
return `${process.env.REACT_APP_BASE_URL}/api/v1`
|
|
}
|
|
|
|
export const getOriginUrl = () => {
|
|
return process.env.REACT_APP_ORIGIN_URL
|
|
}
|
|
|
|
const config: AxiosConfig = {
|
|
// baseURL: process.env.REACT_APP_BASE_URL,
|
|
baseURL: getBaseUrl(),
|
|
timeout: 60 * 1000,
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
}
|
|
}
|
|
|
|
const axios = Axios.create(config)
|
|
|
|
const router: CommonObjectType = new HashRouter({})
|
|
|
|
// token失效,清除用户信息并返回登录界面
|
|
const clearAll = () => {
|
|
store.dispatch({
|
|
type: 'SET_USERINFO',
|
|
payload: {}
|
|
})
|
|
localStorage.setItem('permissions', '')
|
|
|
|
router.history.replace({ pathname: '/login' })
|
|
}
|
|
|
|
// 请求前拦截
|
|
axios.interceptors.request.use(
|
|
(req) => {
|
|
const { token = '' } = store.getState().storeData.userInfo || {}
|
|
// req.headers.Authorization = token
|
|
req.headers.Token = token
|
|
return req
|
|
},
|
|
(err) => {
|
|
return Promise.reject(err)
|
|
}
|
|
)
|
|
|
|
// 返回后拦截
|
|
axios.interceptors.response.use(
|
|
({ data }): Promise<any> => {
|
|
if (data.code === 101) {
|
|
clearAll()
|
|
}
|
|
if (data.code !== 0) {
|
|
message.error(data.message || data.msg)
|
|
return Promise.reject(data)
|
|
}
|
|
return Promise.resolve(data)
|
|
},
|
|
(err) => {
|
|
message.destroy()
|
|
try {
|
|
if (JSON.stringify(err).includes('401')) {
|
|
clearAll()
|
|
message.error({ title: '提示', content: 'Unauthorized' })
|
|
return Promise.reject(err)
|
|
}
|
|
} catch (error) {
|
|
clearAll()
|
|
}
|
|
message.error('网络异常')
|
|
return Promise.reject(err)
|
|
}
|
|
)
|
|
|
|
// post请求
|
|
axios.post = (url: string, params?: object): Promise<any> =>
|
|
axios({
|
|
method: 'post',
|
|
url,
|
|
data: params
|
|
})
|
|
|
|
// get请求
|
|
axios.get = (url: string, params?: object): Promise<any> =>
|
|
axios({
|
|
method: 'get',
|
|
url,
|
|
params
|
|
})
|
|
|
|
// put请求
|
|
axios.put = (url: string, params?: object): Promise<any> =>
|
|
axios({
|
|
method: 'put',
|
|
url,
|
|
data: params
|
|
})
|
|
|
|
// delete请求
|
|
axios.delete = (url: string, params?: object): Promise<any> =>
|
|
axios({
|
|
method: 'delete',
|
|
url,
|
|
data: params
|
|
})
|
|
|
|
export default axios
|