axios攔截器 vue

頁面發(fā)送http請求沽瘦,很多情況我們要對請求和其響應進行特定的處理唉匾;如果請求數非常多旦委,單獨對每一個請求進行處理會變得非常麻煩,程序的優(yōu)雅性也會大打折扣尉间。

好在強大的axios為開發(fā)者提供了這樣一個API:攔截器偿乖。

攔截器分為 請求(request)攔截器和 響應(response)攔截器


請求攔截器


axios.interceptors.request.use(function (config) {

? ? // 在發(fā)起請求請做一些業(yè)務處理

? ? return config;

? }, function (error) {

? ? // 對請求失敗做處理

? ? return Promise.reject(error);

? });


響應攔截器

axios.interceptors.response.use(function (response) {

? ? // 對響應數據做處理

? ? return response;

? }, function (error) {

? ? // 對響應錯誤做處理

? ? return Promise.reject(error);

? })


vue添加axios攔截器

安裝 axios

npm install axios –save-dev


新建文件 axios.js(設置請求超時時間用)

開始統(tǒng)一封裝axios, 首先引入axios哲嘲、qs依賴

import axios from "axios";

import qs from "qs";

然后創(chuàng)建一個axios實例贪薪,這個process.env.BASE_URL在config/dev.evn.js、prod.evn.js里面進行配置:

/****** 創(chuàng)建axios實例 ******/

const service = axios.create({

? ? baseURL: process.env.BASE_URL,? // api的base_url

? ? timeout: 5000? // 請求超時時間

});


使用request攔截器對axios請求配置做統(tǒng)一處理

service.interceptors.request.use(config => {? ?

? ? app.$vux.loading.show({? ? ? ?

? ? ? ? text: '數據加載中……'? ?

? ? });? ?

? ? config.method === 'post'? ? ? ?

? ? ? ? ? config.data = qs.stringify({...config.data})? ? ? ?

? ? ? ? : config.params = {...config.params};? ?

? ? config.headers['Content-Type'] = 'application/x-www-form-urlencoded';? ?

? ? return config;

? ? }, error => {? //請求錯誤處理?

? ? ? ? app.$vux.toast.show({? ? ? ?

? ? ? ? ? ? type: 'warn',? ? ? ?

? ? ? ? ? ? text: error?

? ? ? ? });? ?

? ? ? ? Promise.reject(error)

? ? }

);


對response做統(tǒng)一處理


service.interceptors.response.use(? ?

? ? response => {? //成功請求到數據? ? ? ?

? ? ? ? app.$vux.loading.hide();? ? ? ?

? ? ? ? //這里根據后端提供的數據進行對應的處理? ? ? ?

? ? ? ? if (response.data.result === 'TRUE') {? ? ? ? ? ?

? ? ? ? ? ? return response.data;? ? ? ?

? ? ? ? } else {? ? ? ? ? ?

? ? ? ? ? ? app.$vux.toast.show({?

? ? ? ? ? ? ? ? //常規(guī)錯誤處理? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? type: 'warn',? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? text: response.data.data.msg? ? ? ? ? ?

? ? ? ? ? ? });? ? ? ?

? ? ? ? }? ?

? ? },? ?

? ? error => {? //響應錯誤處理console.log('error');? ? ? ?

? ? ? ? console.log(error);? ? ? ?

? ? ? ? console.log(JSON.stringify(error));? ? ? ?

? ? ? ? let text = JSON.parse(JSON.stringify(error)).response.status === 404? ? ? ? ? ?

? ? ? ? ? ? ? '404'? ? ? ? ? ?

? ? ? ? ? ? : '網絡異常眠副,請重試';? ? ? ?

? ? ? ? app.$vux.toast.show({? ? ? ? ? ?

? ? ? ? ? ? type: 'warn',? ? ? ? ? ?

? ? ? ? ? ? text: text? ? ? ?

? ? ? ? });? ? ? ?

? ? ? ? return Promise.reject(error)?

? ? }

)


demo

// 根據狀態(tài)碼進行判斷跳轉

// -100跳回登錄? ? -101提示錯誤信息


axios.interceptors.response.use(function (response) {

? let that = this

? let sid = window.location.href

? if (response.status == -100) {

? ? ? ? ? router.replace({

? ? ? ? ? ? ? path: '/admin_login',

? ? ? ? ? ? ? query: {backurl: sid}

? ? ? ? ? })

? } else if (response.status == -101) {

? ? ? this.$message.error(response.data.message);

? }

? return response;

}, function (error) {

? // 對響應錯誤做點什么

? return Promise.reject(error);

});

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末画切,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子囱怕,更是在濱河造成了極大的恐慌霍弹,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娃弓,死亡現場離奇詭異典格,居然都是意外死亡,警方通過查閱死者的電腦和手機台丛,發(fā)現死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門钝计,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人齐佳,你說我怎么就攤上這事私恬。” “怎么了炼吴?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵本鸣,是天一觀的道長。 經常有香客問我硅蹦,道長荣德,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任童芹,我火速辦了婚禮涮瞻,結果婚禮上,老公的妹妹穿的比我還像新娘假褪。我一直安慰自己署咽,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布生音。 她就那樣靜靜地躺著宁否,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缀遍。 梳的紋絲不亂的頭發(fā)上慕匠,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音域醇,去河邊找鬼台谊。 笑死,一個胖子當著我的面吹牛譬挚,可吹牛的內容都是我干的锅铅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼殴瘦,長吁一口氣:“原來是場噩夢啊……” “哼狠角!你這毒婦竟也來了?” 一聲冷哼從身側響起蚪腋,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤丰歌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后屉凯,有當地人在樹林里發(fā)現了一具尸體立帖,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年悠砚,在試婚紗的時候發(fā)現自己被綠了晓勇。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绑咱,靈堂內的尸體忽然破棺而出绰筛,到底是詐尸還是另有隱情,我是刑警寧澤描融,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布铝噩,位于F島的核電站,受9級特大地震影響窿克,放射性物質發(fā)生泄漏骏庸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一年叮、第九天 我趴在偏房一處隱蔽的房頂上張望具被。 院中可真熱鬧,春花似錦只损、人聲如沸一姿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啸蜜。三九已至,卻和暖如春辈挂,著一層夾襖步出監(jiān)牢的瞬間衬横,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工终蒂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜂林,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓拇泣,卻偏偏與公主長得像噪叙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子霉翔,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容