axios封裝
import axios from 'axios';
import qs from 'qs';
/**
* 請求失敗后的錯誤統(tǒng)一處理
* @param {Number} status 請求失敗的狀態(tài)碼
*/
const errorHandle = (status, other) => {
// 狀態(tài)碼判斷
switch (status) {
// 401: 未登錄狀態(tài)钩杰,跳轉登錄頁
case 401:
break;
// 403 token過期
case 403:
break;
// 404請求不存在
case 404:
break;
default:
console.log(other);
}}
// 創(chuàng)建axios實例
var instance = axios.create({
timeout: 1000 * 12,
// baseURL: 'https://api.example.com'
});
// 設置post請求頭
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
/**
* 請求攔截器
* 每次請求前,如果存在token則在請求頭中攜帶token
*/
instance.interceptors.request.use(
config => {
if (config.method === 'get') {
config.headers['Content-Type'] = 'application/json'
}
if (config.method === 'post') {
config.data = qs.stringify(config.data)
config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
}
return config;
},
error => Promise.error(error))
// 響應攔截器
instance.interceptors.response.use(
// 請求成功
res => res.status === 200 ? Promise.resolve(res) : Promise.reject(res),
// 請求失敗
error => {
const { response } = error;
if (response) {
// 請求已發(fā)出督赤,但是不在2xx的范圍
errorHandle(response.status, response.data.message);
return Promise.reject(response);
} else {
// 處理斷網(wǎng)的情況
if (!window.navigator.onLine) {
//和女友商量結果
//彈個框提醒一下OK
// store.commit('changeNetwork', false);
} else {
return Promise.reject(error);
}
}
});
export default instance;
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者