vue ajax 攔截原理與實現(xiàn)方法示例
本文實例講述了vue ajax 攔截原理與實現(xiàn)方法。分享給大家供大家參考,具體如下:
概要說明
在開發(fā)的過程中,我們需要通過AJAX請求,訪問后臺獲取數(shù)據(jù),這個獲取數(shù)據(jù)的時候,當然需要后臺需要時登錄狀態(tài)才能訪問數(shù)據(jù),當沒有登錄的情況,這個時候我們需要跳轉(zhuǎn)到登錄界面進行登錄。
如果每次請求都要做如下處理,我們程序邏輯將無比混亂,ajax 可以為我們解決這個問題。
具體實現(xiàn)思路是:
1.發(fā)送ajax 請求訪問后端數(shù)據(jù)。
2.后端如果發(fā)現(xiàn)沒有登錄,那么將會丟出一個exceptionaction 的http 響應(yīng)頭。
3.這個判斷將在ajax 攔截中處理,只要有這個響應(yīng)頭,我們會檢查是否有登錄token,如果沒有就會去到登錄界面,如果有則嘗試使用token自動登錄。
這個過程將在攔截中完成。
這個好處是 客戶只需要關(guān)注業(yè)務(wù)代碼的編寫,登錄處理放到攔截中處理,而且所有的請求將都會被攔截。
實現(xiàn)代碼
const axiosInstance = axios.create({
timeout: 20000,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With': 'XMLHttpRequest'
}
});
axios 是我們訪問后臺的JS框架。
定義攔截處理。
function interceptAjax(res){
var tmp = res.headers["exceptionaction"];
if(!tmp) return res;
//系統(tǒng)已經(jīng)登錄。
var token = RxUtil.getCache("token");
if(!token) {
router.push({
name: "login"
});
return;
}
使用攔截器。
axiosInstance.interceptors.response.use(res=>interceptAjax(res));
這樣每次訪問都會經(jīng)過攔截器,這也給我們一些思路,一些需要統(tǒng)一驗證的的訪問,可以通過攔截器進行處理。
希望本文所述對大家vue.js程序設(shè)計有所幫助。
相關(guān)文章
關(guān)于el-form中el-input輸入框的寬度問題詳解
自從用了element-ui,確實好用,該有的組件都有,下面這篇文章主要給大家介紹了關(guān)于el-form中el-input輸入框的寬度問題的相關(guān)資料,需要的朋友可以參考下2023-01-01
vue3+TypeScript+vue-router的使用方法
本文詳細講解了vue3+TypeScript+vue-router的使用方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01

