vue 开发系列 vue ajax 拦截

Posted 自由港

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 开发系列 vue ajax 拦截相关的知识,希望对你有一定的参考价值。

概要说明

在开发的过程中,我们需要通过AJAX请求,访问后台获取数据,这个获取数据的时候,当然需要后台需要时登录状态才能访问数据,当没有登录的情况,这个时候我们需要跳转到登录界面进行登录。

如果每次请求都要做如下处理,我们程序逻辑将无比混乱,ajax 可以为我们解决这个问题。

具体实现思路是:

1.发送ajax 请求访问后端数据。

2.后端如果发现没有登录,那么将会丢出一个exceptionaction 的http 响应头。

3.这个判断将在ajax 拦截中处理,只要有这个响应头,我们会检查是否有登录token,如果没有就会去到登录界面,如果有则尝试使用token自动登录。

这个过程将在拦截中完成。

这个好处是 客户只需要关注业务代码的编写,登录处理放到拦截中处理,而且所有的请求将都会被拦截。

 

实现代码

const axiosInstance = axios.create({
    timeout: 20000,
    headers: {
        ‘Content-Type‘: ‘application/x-www-form-urlencoded‘,
        ‘X-Requested-With‘: ‘XMLHttpRequest‘
    }
});
axios 是我们访问后台的JS框架。
定义拦截处理。
function interceptAjax(res){
    var tmp = res.headers["exceptionaction"];

    if(!tmp) return res;
    //系统已经登录。
    var token = RxUtil.getCache("token");
    if(!token) {
        router.push({
            name: "login"
        });
        return;
    }

使用拦截器。

axiosInstance.interceptors.response.use(res=>interceptAjax(res));

这样每次访问都会经过拦截器,这也给我们一些思路,一些需要统一验证的的访问,可以通过拦截器进行处理。

以上是关于vue 开发系列 vue ajax 拦截的主要内容,如果未能解决你的问题,请参考以下文章

vue-resource:在拦截 ajax 错误时捕获“未捕获(在承诺中)”

vue中axios请求拦截器和响应拦截器 以及401状态处理

vue2中使用Mock.js生成随机数据,拦截 Ajax 请求

vue2.0 +vux+webpack 跨域代理 以及vux ajax请求插件 的拦截请求 验证key

vue中的ajax请求

vscode 用户代码片段 vue初始化模板 Snippet #新加入开头注释 自动生成文件名 开发日期时间等内容