axios 拦截以及 API简单配置(element)

匿名 (未验证) 提交于 2019-12-03 00:15:02

在某些情况下,有时候会在接口请求的API中需要拿到存在浏览器中的COOKIE,调用的方式可以为:

// 获取浏览器Cookie function getCookie(cname) {   var name = cname + "=";   var decodedCookie = decodeURIComponent(document.cookie);   var ca = decodedCookie.split(';');   for(var i = 0; i <ca.length; i++) {       var c = ca[i];       while (c.charAt(0) == ' ') {           c = c.substring(1);        }        if (c.indexOf(name) == 0) {           return c.substring(name.length, c.length);        }    }   return ""; }

在axios请求中,需要在发送前和发送后进行简单的设置拦截:

// 添加一个响应拦截器 Axios.interceptors.request.use((config) => {     let account =  sessionStorage.account;   let token = sessionStorage.token;   // if(config.url == Axios.bullRanking){   //   // config.headers['Authorization'] = 'Bearer';   //   }else{   //     config.headers['Authorization'] = 'Bearer ' + token;   //   }     config.headers['Authorization'] = 'Bearer ' + token     // config.headers['Accept'] = 'application/json'     // config.headers['account'] = account;   //在发送请求之前做某件事    // 判断是否登录       // let cur_id = "cur_id",       //       sign = "sign";    //  if (!cur_id||!sign) {    //    localStorage.clear();    //    window.location.href = "index.html";    //  };       //  给手机验证码接口加mcode     // if(config.url == Axios.send_sms){     //   if(sessionStorage.mcode){     //     var mcode = sessionStorage.mcode     //     config.data.mcode = mcode     //   }     // }      if(config.url)     if(config.method  === 'post'){         config.data = qs.stringify(config.data);         config.data = config.data+"&account=" + account;         config.headers['locale'] =  getCookie('language')=='Chinese'?'zh-CN':'en';         config.headers['from'] =  'pc';     }     if(config.method  === 'get'){         config.headers['locale'] =  getCookie('language')=='Chinese'?'zh-CN':'en';         config.headers['from'] =  'pc';     }     return config; },(error) =>{      _.toast("错误的传参", 'fail');     return Promise.reject(error); });  // 添加返回信息验证 Axios.interceptors.response.use(function (response) {     if(response.data.status =='505' || response.data.status =='404'){         if(!sessionStorage.account){             return false;         }       sessionStorage.clear();       if (process.env.NODE_ENV === 'production') {         window.location.href = "/wap/#/login";       } else {         window.location.href = "/#/login";       }              }     //  console.log(sessionStorage.account)     if(response.data.status =='401' || response.data.code =='401'){       Vue.prototype.resetSetItem('watchStorage', 'false');       // sessionStorage.setItem("watchStorage", 'false');              // console.log(123)       if(window.location.hash !='#/home'&&window.location.hash !='#/XXXX'){         Message({           showClose: true,           message: response.data.msg,           type: "error"         });         window.location.href = "#/Login";                   return       }            }     return response;   }, function (error) {     return Promise.reject(error);   });   

其中的

Vue.prototype.resetSetItem('watchStorage', 'false');是全局封装的监听sessionStorage变化的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!