最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue+axios 前端實現(xiàn)的常用攔截的代碼示例

 更新時間:2018年08月23日 11:20:14   作者:風雨后見彩虹  
這篇文章主要介紹了vue+axios 前端實現(xiàn)的常用攔截的代碼示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Axios攔截器配置

main.js

//定義一個請求攔截器
Axios.interceptors.request.use(function(config){
 store.state.isShow=true; //在請求發(fā)出之前進行一些操作
 return config
})
//定義一個響應攔截器
Axios.interceptors.response.use(function(config){
 store.state.isShow=false;//在這里對返回的數(shù)據(jù)進行處理
 return config
})

分別定義一個請求攔截器(請求開始時執(zhí)行某些操作)、響應攔截器(接受到數(shù)據(jù)后執(zhí)行某些操作),之間分別設置攔截時執(zhí)行的操作,改變state內(nèi)isShow的布爾值從而控制loading組件在觸發(fā)請求數(shù)據(jù)開始時顯示loading,返回數(shù)據(jù)時隱藏loading
特別注意:這里有一個語法坑(我可是來來回回踩了不少次)main.js中調(diào)取、操作vuex state中的數(shù)據(jù)不同于組件中的this.$store.state,而是直接store.state 同上面代碼

一、路由攔截使用

router.beforeEach((to, from, next) => {
 if (to.meta.requireAuth) { // 判斷該路由是否需要登錄權(quán)限
  if (store.state.token) { // 通過vuex state獲取當前的token是否存在
   next();
  }
  else {
   next({
    path: '/login',
    query: {redirect: to.fullPath} // 將跳轉(zhuǎn)的路由path作為參數(shù),登錄成功后跳轉(zhuǎn)到該路由
   })
  }
 }
 else {
  next();
 }
})

二、攔截器使用

要想統(tǒng)一處理所有http請求和響應,就得用上 axios 的攔截器。通過配置http response inteceptor,當后端接口返回401 Unauthorized(未授權(quán)),讓用戶重新登錄。

// http request 攔截器
axios.interceptors.request.use(
 config => {
  if (store.state.token) { // 判斷是否存在token,如果存在的話,則每個http header都加上token
   config.headers.Authorization = `token ${store.state.token}`;
  }
  return config;
 },
 err => {
  return Promise.reject(err);
 });
 
// http response 攔截器
axios.interceptors.response.use(
 response => {
  return response;
 },
 error => {
  if (error.response) {
   switch (error.response.status) {
    case 401:
     // 返回 401 清除token信息并跳轉(zhuǎn)到登錄頁面
     store.commit(types.LOGOUT);
     router.replace({
      path: 'login',
      query: {redirect: router.currentRoute.fullPath}
     })
   }
  }
  return Promise.reject(error.response.data) // 返回接口返回的錯誤信息
 });

三、實例

/**
 * http配置
 */
// 引入axios以及element ui中的loading和message組件
import axios from 'axios'
import { Loading, Message } from 'element-ui'
// 超時時間
axios.defaults.timeout = 5000
// http請求攔截器
var loadinginstace
axios.interceptors.request.use(config => {
 // element ui Loading方法
 loadinginstace = Loading.service({ fullscreen: true })
 return config
}, error => {
 loadinginstace.close()
 Message.error({
 message: '加載超時'
 })
 return Promise.reject(error)
})
// http響應攔截器
axios.interceptors.response.use(data => {// 響應成功關(guān)閉loading
 loadinginstace.close()
 return data
}, error => {
 loadinginstace.close()
 Message.error({
 message: '加載失敗'
 })
 return Promise.reject(error)
})
 
export default axios

 如果你是使用了vux,那么在main.js這樣使用:

Vue.prototype.$http.interceptors.response.use()

參考地址:vue中axios解決跨域問題和攔截器使用

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue開發(fā)樹形結(jié)構(gòu)組件(組件遞歸)

    vue開發(fā)樹形結(jié)構(gòu)組件(組件遞歸)

    這篇文章主要為大家詳細介紹了vue開發(fā)樹形結(jié)構(gòu)組件的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue模擬數(shù)據(jù),實現(xiàn)路由進入商品詳情頁面的示例

    Vue模擬數(shù)據(jù),實現(xiàn)路由進入商品詳情頁面的示例

    今天小編就為大家分享一篇Vue模擬數(shù)據(jù),實現(xiàn)路由進入商品詳情頁面的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Vue+Element+Springboot圖片上傳的實現(xiàn)示例

    Vue+Element+Springboot圖片上傳的實現(xiàn)示例

    最近在學習前段后分離,本文介紹了Vue+Element+Springboot圖片上傳的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2021-11-11
  • VUE開發(fā)分布式醫(yī)療掛號系統(tǒng)后臺管理頁面步驟

    VUE開發(fā)分布式醫(yī)療掛號系統(tǒng)后臺管理頁面步驟

    本文從整體上介紹Vue框架的開發(fā)流程,結(jié)合具體的案例,使用Vue框架調(diào)用具體的后端接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • Vue表單實例代碼

    Vue表單實例代碼

    Vue.js 是用于構(gòu)建交互式的 Web 界面的庫。這篇文章主要介紹了Vue表單實例代碼的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • vue實現(xiàn)動態(tài)監(jiān)測元素高度

    vue實現(xiàn)動態(tài)監(jiān)測元素高度

    這篇文章主要介紹了vue實現(xiàn)動態(tài)監(jiān)測元素高度方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue awesome swiper異步加載數(shù)據(jù)出現(xiàn)的bug問題

    vue awesome swiper異步加載數(shù)據(jù)出現(xiàn)的bug問題

    這篇文章主要介紹了vue awesome swiper異步加載數(shù)據(jù)出現(xiàn)的bug問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • vue3中onUnmounted使用詳解

    vue3中onUnmounted使用詳解

    在Vue3中,onUnmounted是一個生命周期鉤子,它會在組件實例被卸載(unmounted)和銷毀之前被調(diào)用,本文給大家介紹vue3中onUnmounted使用詳解,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 解決vue+router路由跳轉(zhuǎn)不起作用的一項原因

    解決vue+router路由跳轉(zhuǎn)不起作用的一項原因

    這篇文章主要介紹了解決vue+router路由跳轉(zhuǎn)不起作用的一項原因,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • webpack如何打包一個按需引入的vue組件庫

    webpack如何打包一個按需引入的vue組件庫

    在vue項目開發(fā)中,我們會將經(jīng)常用到的邏輯或模塊抽象成組件,對于那些多個項目都有用到的組件,可以考慮封裝成組件庫,這篇文章主要給大家介紹了關(guān)于webpack如何打包一個按需引入的vue組件庫的相關(guān)資料,需要的朋友可以參考下
    2022-02-02

最新評論

新闻| 德昌县| 青冈县| 东乡县| 唐山市| 丰顺县| 客服| 平顶山市| 集贤县| 惠东县| 富川| 南丰县| 德格县| 齐河县| 平南县| 武乡县| 新郑市| 金乡县| 饶平县| 白玉县| 合阳县| 白水县| 微博| 前郭尔| 陕西省| 成安县| 永清县| 赞皇县| 南充市| 泌阳县| 乌拉特中旗| 锦屏县| 翁源县| 闸北区| 东乡族自治县| 湘阴县| 松江区| 怀仁县| 会泽县| 伊川县| 乐亭县|