import axios from 'axios'
import {getCookie, delCookie} from "../libs/util";
import router from '../router';
axios.defaults.responseType = 'json';
axios.defaults.timeout = 60000;
const baseURL=process.env.NODE_ENV === 'production' ? 'https://admin.intco.cn/' : 'http://192.168.6.166:8080/';
const instance = axios.create({
baseURL,
headers: {},
}
);
const noTokenList = process.env.NODE_ENV === 'production' ?['https://upload.intco.cn/upload/image', 'https://upload.intco.cn/upload/image/batchs',
]:['http://192.168.6.166:8080/uploadImg/upload/image','http://192.168.6.166:8080/uploadImg/upload/image/batchs'];
// request 攔截器
instance.interceptors.request.use(
config => {
// Tip: 1
// 請求開始的時候可以結合 vuex 開啟全屏的 loading 動畫
// Tip: 2
// 帶上 token , 可以結合 vuex 或者重 localStorage
if (!config.noToken) {
if (getCookie('token') && !noTokenList.includes(config.url)) {
config.headers['authToken'] = getCookie('token') // 讓每個請求攜帶token--['X-Token']為自定義key 請根據實際情況自行修改
} else {
console.log(config)
}
}
// Tip: 3
// 根據請求方法四啰,序列化傳來的參數糠亩,根據后端需求是否序列化
// if (config.method.toLocaleLowerCase() === 'post'
// || config.method.toLocaleLowerCase() === 'put'
// || config.method.toLocaleLowerCase() === 'delete') {
// config.data = qs.stringify(config.data)
// }
return config
},
error => {
// 請求錯誤時做些事(接口錯誤涮帘、超時等)
// Tip: 4
// 關閉loadding
console.log('request:', error)
// 1.判斷請求超時
if (error.code === 'ECONNABORTED' && error.message.indexOf('timeout') !== -1) {
console.log('根據你設置的timeout/真的請求超時 判斷請求現在超時了瑰剃,你可以在這里加入超時的處理方案')
// return service.request(originalRequest);//例如再重復請求一次
}
// 2.需要重定向到錯誤頁面
const errorInfo = error.response
console.log(errorInfo)
return Promise.reject(error) // 在調用的那邊可以拿到(catch)你想返回的錯誤信息
}
);
// response 攔截器
instance.interceptors.response.use(
response => {
let data;
// IE9時response.data是undefined撤蚊,因此需要使用response.request.responseText(Stringify后的字符串)
if (response.data == undefined) {
data = response.request.responseText
} else {
data = response.data
}
if (data.status == 505) {
delCookie('token');
router.replace({path: '/pages/login'});
}
if (response.headers['export-filename']) {
return response
} else {
return data
}
},
err => {
if (err && err.response) {
switch (err.response.status) {
case 400:
err.message = '請求錯誤'
break
case 401:
err.message = '未授權被辑,請登錄'
break
case 403:
err.message = '拒絕訪問'
break
case 404:
err.message = `請求地址出錯: ${err.response.config.url}`
break
case 408:
err.message = '請求超時';
router.replace({path: '/pages/404'});
break
case 500:
err.message = '服務器內部錯誤'
break
case 501:
err.message = '服務未實現'
break
case 502:
err.message = '網關錯誤'
break
case 503:
err.message = '服務不可用'
break
case 504:
err.message = '網關超時'
break
case 505:
err.message = 'HTTP版本不受支持'
break
default:
}
}
if (err.message.includes('timeout')) {
router.push({path: '/pages/500'});
}
return Promise.reject(err) // 返回接口返回的錯誤信息
}
);
instance.baseURL=baseURL;
export default instance;
自用vue axios
?著作權歸作者所有,轉載或內容合作請聯系作者
- 文/潘曉璐 我一進店門削咆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牍疏,“玉大人,你說我怎么就攤上這事拨齐×墼桑” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵瞻惋,是天一觀的道長厦滤。 經常有香客問我,道長歼狼,這世上最難降的妖魔是什么掏导? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮羽峰,結果婚禮上趟咆,老公的妹妹穿的比我還像新娘。我一直安慰自己梅屉,他們只是感情好忍啸,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著履植,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悄晃。 梳的紋絲不亂的頭發(fā)上玫霎,一...
- 文/蒼蘭香墨 我猛地睜開眼沙热,長吁一口氣:“原來是場噩夢啊……” “哼叉钥!你這毒婦竟也來了?” 一聲冷哼從身側響起篙贸,我...
- 正文 年R本政府宣布拯啦,位于F島的核電站,受9級特大地震影響熔任,放射性物質發(fā)生泄漏褒链。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一疑苔、第九天 我趴在偏房一處隱蔽的房頂上張望甫匹。 院中可真熱鬧,春花似錦惦费、人聲如沸兵迅。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽恍箭。三九已至,卻和暖如春瞧省,著一層夾襖步出監(jiān)牢的瞬間扯夭,已是汗流浹背。 一陣腳步聲響...