axios interceptors 拦截配置

发布于 2022-09-06 02:30:26 字数 240 浏览 16 评论 0

图片描述

请问下我用interceptors拦截response的时候如何根据
response.data.statusCode == '-1'的时候调用iview组件给出提示,然后router跳转至登录页面呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦罢 2022-09-13 02:30:26

// 以下代码插入在响应拦截器返回数据时处理

let data = response.data;
if(data.statusCode === -1){
    Vue.$Message.error('需要登录');
    setTimeout(function(){
        //  控制路由跳转或者直接改变href到登录页
        window.location.href = '/login' :
    },1000)
    return ;
}
return data;
以下代码是我前几天写的,也是用与ajax响应统一处理
axios.interceptors.response.use(function (response) {
        if(response.data.code === 1){
            // 后端返回系统错误,抛出错误信息
            let ifr = document.getElementById("mainframe");
            if (ifr) {
                ifr.contentWindow.document.location.reload();
            } else {
                location.pathname === "/logout" ? location.href = '/' : location.reload();
            }
        }
        let url = response.config.url;
        // 自定义错误处理,此处错误不弹出提示,需要在传入的success回调中自定义对response code的处理,可能和具体业务逻辑有关,并不是所有非0的返回状态码都需要弹窗提示,依赖了loadsh.js
        let index = _.indexOf(["/query_login","/password_login","/user/get_wechat_bind_uuid","/user/query_login"],url);
        if(index >= 0){
            return response.data;
        }
        // 判断code
        let data = response.data;
        if(data.code !== 0){
            throw new Error(data.msg)
        }
        return response.data;
    }, function (error) {
        if(error){
            // 执行自定义错误回调
            return Promise.reject(error);
        }else{
            // 错误提示
            Vue.$Message.error(error.msg);
        }
    });
我家小可爱 2022-09-13 02:30:26

当在代码中使用 Vue.use(iView) 的时候,iView 会在 Vue 构造函数的原型上添加一个 $Message 属性,所以我们才可以在每个组件中使用 this.$Message.error() 方法( this 指向 Vue 组件实例),题主想要在一个单独的文件(非组件)中使用提示,只需直接从原型上拿到方法即可:

import Vue from 'vue'

Vue.prototype.$Message.error('请先登录')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文