import axios from 'axios'
import Qs from 'qs'
import history from '../utils/history';
import db from '../utils/storage'
import { message } from 'antd';
const targetUrl = window.location.origin
if (process.env.NODE_ENV === 'development') {
axios.defaults.baseURL = targetUrl + '/transpond'
} else {
axios.defaults.baseURL = targetUrl + '/api'
}
axios.defaults.timeout = 30000
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
axios.interceptors.request.use(config => {
const token = 'Bearer ' + db.ss.get('access_token')
token && (config.headers.Authorization = token);
return config;
}, error => {
message.error('Request Timeout!');
return Promise.error(error);
});
axios.interceptors.response.use(
response => {
if (response.status === 200) {
return Promise.resolve(response);
} else {
return Promise.reject(response);
}
},
error => {
if (error.response.status) {
switch (error.response.status) {
case 401:
history.push('/login')
break;
case 403:
message.error('Login expired. Please log in again!')
db.ss.remove('access_token')
db.ss.remove('token_type')
db.ss.remove('user_name')
db.ss.remove('expires_in')
setTimeout(() => {
history.push('/login')
}, 1000);
break;
case 404:
message.error('The network request does not exist.');
break;
case 504:
message.error('Login failed.');
db.ss.remove('access_token')
db.ss.remove('token_type')
db.ss.remove('user_name')
history.push('/login')
break;
default:
message.error(error.response.data.msg);
}
return Promise.reject(error.response);
}
})
* get
* @param {String} url
* @param {Object} params
*/
export function get(url, params) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params
}).then(res => {
resolve(res.data)
}).catch(err => {
reject(err.data)
})
});
}
* post
* @param {String} url
* @param {Object} params
*/
export function post(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, params)
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data)
})
})
}
* post参数序列化
* @param {String} url
* @param {Object} params
*/
export function qspost(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, params)
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data)
})
});
}