国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue+axios 前端實現的常用攔截的代碼示例

2024-05-06 15:31:15
字體:
來源:轉載
供稿:網友

Axios攔截器配置

main.js

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

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

一、路由攔截使用

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

二、攔截器使用

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

// 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信息并跳轉到登錄頁面     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 loadinginstaceaxios.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 => {// 響應成功關閉loading loadinginstace.close() return data}, error => { loadinginstace.close() Message.error({ message: '加載失敗' }) return Promise.reject(error)}) export default axios            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 临西县| 乐昌市| 萨迦县| 阳春市| 民勤县| 晋州市| 宜阳县| 岳普湖县| 西林县| 桐城市| 修水县| 甘谷县| 织金县| 荆门市| 邵阳县| 醴陵市| 嘉黎县| 台州市| 吉木萨尔县| 双桥区| 江川县| 五华县| 巩义市| 丹棱县| 长兴县| 堆龙德庆县| 焦作市| 全椒县| 临城县| 连云港市| 永宁县| 浑源县| 台北市| 长沙县| 高邮市| 甘德县| 衡山县| 扎赉特旗| 大兴区| 南靖县| 广东省|