import axios from 'axios';
import { Message } from 'element-ui';
let baseURL = '';
if (process.env.NODE_ENV === 'development') {
baseURL = ''; //設置自己的baseURL
}
const service = axios.create({
baseURL
// timeout: 240000 // request timeout455445424
});
// request interceptor
service.interceptors.request.use(config => {
config.headers = {
'Content-Type': 'application/json;charset=utf-8'
};
return config;
}, error => {
// Do something with request error
Promise.reject(error);
});
const codeMessage = {
200: '服務器成功返回請求的數據。',
201: '新建或修改數據成功。',
202: '一個請求已經進入后台排隊(異步任務)。',
204: '刪除數據成功。',
400: '發出的請求有錯誤,服務器沒有進行新建或修改數據的操作。',
401: '用戶沒有權限(令牌、用戶名、密碼錯誤)。',
403: '用戶得到授權,但是訪問是被禁止的。',
404: '發出的請求針對的是不存在的記錄,服務器沒有進行操作。',
406: '請求的格式不可得。',
410: '請求的資源被永久刪除,且不會再得到的。',
422: '當創建一個對象時,發生一個驗證錯誤。',
500: '服務器發生錯誤,請檢查服務器。',
502: '網關錯誤。',
503: '服務不可用,服務器暫時過載或維護。',
504: '網關超時。'
};
/**
* @function 請求狀態碼檢測
* @param {type} response {description}
* @return {type} {description}
*/
const checkStatus = response => {
if (response.status >= 200 && response.status < 300) {
return response;
}
const errortext = codeMessage[response.status] || response.statusText;
Message({
message: `請求錯誤 ${response.status}: ${response.url},${errortext}`,
type: 'error',
duration: 5 * 1000
});
const error = new Error(errortext);
error.name = response.status;
error.response = response;
throw error;
};
/* 返回一個Promise(發送post請求) */
const fetch = (type, url, params) => {
return new Promise((resolve, reject) => {
const data = (type === 'get' || type === 'delete') ? { params: params } : params;
service[type](url, data)
.then(checkStatus)
.then(response => {
const resultData = response.data;
const code = resultData.code || resultData.R;
if (code === 200 || code === 220 || code === 299) {
resolve(resultData);
} else if (code === 1) {
Message({
message: resultData.message || resultData.msg,
type: 'error',
duration: 5 * 1000
});
reject(new Error(resultData.message));
} else {
if (resultData.message !== '異常') {
Message({
message: resultData.message || resultData.msg,
type: 'error',
duration: 5 * 1000
});
}
reject(new Error(resultData.message));
}
}).catch((error) => {
reject(error);
});
});
};
export default fetch;