vue --- axios拦截器+form格式请求体
在vue2.x中使用CLI生成的模板有很大改变,需要自己手动在main.ts同级目录下新建interceptors.ts
interceptors.ts
import axios from 'axios';
import router from './router';
// axios配置
axios.defaults.timeout = 6000;
axios.defaults.baseURL = 'http://192.168.7.69:8000';
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// 设定请求头内容格式为form
// http request 拦截器
axios.interceptors.request.use(
    config =>{
        if (localStorage.token){ // 判断token是否存在
            config.headers.Authorization = localStorage.token;
        }
        return config;
    },
    error => {
        return Promise.reject(error)
    }
);
// http response 拦截器
axios.interceptors.response.use(
    response =>{
        return response
    },
    error => {
        if (error.response.data.result === 2){
        // 这里是http请求失败后的返回判断,根据个人情况判断
            router.replace('/login')
                .then(
                    r =>{
                        localStorage.clear();
                        error.message = '身份已过期,请重新登录';
                    }
                );
        }else {
            return Promise.reject(error)
        }
    }
);
router.beforeEach(((to, from, next) => {
    if (to.meta.requireAuth){ //判断该路由是否需要登陆权限
        if(localStorage.token){ //token存在
            next()
        }else {
            next(  // token不存在
                {
                    path:'/login',
                    query:{
                        redirect:to.fullPath
                    }
                }
            )
        }
    }else { //如果不需要权限校验,直接跳转
        next()
    }
}));
export default axios;
main.ts
在main.ts中导入拦截器
import axios from './interceptors';
添加到VUE属性上
Vue.use(VueAxios,axios);
在使用的地方
this.axios.get('') // get请求
存储token到localstorage
登录成功之后
 window.localStorage["token"] = res.data.token
使用qs设置form表单请求体
网上有人说qs包含在axios中,但我在使用的时候不能导入。提示下载@types/qs,之后再用到的模块导入
import QS from 'qs'
应用:
let reqData = {
             username:this.ruleForm.username,
             password:md5(this.ruleForm.password)
         };
this.axios.post("/login",QS.stringify(reqData))
                     .then()
介绍了一些基本使用,具体问题欢迎留言探讨!
vue --- axios拦截器+form格式请求体的更多相关文章
- vue axios拦截器 + 自编写插件 实现全局 loading 效果;
		
项目需求:用自定义的 .gif 图标实现全局 loading 效果:为避免在每个页面手动添加,且简单高效的实现,经查阅资料,最终采用了 vue axios拦截器 + 自编写 loading 插件:下面 ...
 - vue axios拦截器介绍
		
关于axios的拦截器是一个作用非常大,非常好用的东西.分为请求拦截器和响应拦截器两种.我一般把拦截器写在main.js里. 1. 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作,例如在每个请 ...
 - vue axios 拦截器
		
前言 项目中需要验证登录用户身份是否过期,是否有权限进行操作,所以需要根据后台返回不同的状态码进行判断. 第一次使用拦截器,文章中如有不对的地方还请各位大佬帮忙指正谢谢. 正文 axios的拦截器分为 ...
 - vue axios拦截器的封装
		
// request.js import axios from 'axios' import qs from 'qs' // 创建axios实例 const service = axios.creat ...
 - vue axios拦截器加全局loading
		
import axios from 'axios' import util from './util' import {showFullScreenLoading, tryHideFullScreen ...
 - 学习axios必知必会(2)~axios基本使用、使用axios前必知细节、axios和实例对象区别、拦截器、取消请求
		
一.axios的基本使用: ✿ 使用axios前必知细节: 1.axios 函数对象(可以作为axios(config)函数使用去发送请求,也可以作为对象调用方法axios.request(confi ...
 - Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
		
准备 利用vue-cli脚手架创建项目 进入项目安装vuex.axios(npm install vuex,npm install axios) axios配置 项目中安装axios模块(npm in ...
 - vue导航守卫和axios拦截器的区别
		
在Vue项目中,有两种用户登录状态判断并处理的情况,分别为:导航守卫和axios拦截器. 一.什么是导航守卫? vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航.(在路由跳转时 ...
 - Axios使用拦截器全局处理请求重试
		
Axios拦截器 Axios提供了拦截器的接口,让我们能够全局处理请求和响应.Axios拦截器会在Promise的then和catch调用前拦截到. 请求拦截示例 axios.interceptors ...
 
随机推荐
- chsh
			
修改shell进程
 - svn项目迁移至gitlab
			
关于svn项目迁移有人可能会说,新建一个git项目,把原来的代码直接扔进去提交不完了吗.恩,是的,没错.但是为了保留之前的历史提交记录,还是得做下面的步骤 首先确保本地正常安装配置好git,具体步骤不 ...
 - 52、Spark Streaming之输入DStream之基础数据源以及基于HDFS的实时wordcount程序
			
一.概述 1.Socket:之前的wordcount例子,已经演示过了,StreamingContext.socketTextStream() 2.HDFS文件 基于HDFS文件的实时计算,其实就是, ...
 - 洛谷P2029跳舞
			
题目 DP, 用的\(dp[i][j]\)表示\(i\)之前的数选了\(j\)个得到的最大结果,然后状态转移方程应该是 \[if (j \% t == 0)~~dp[i][j] = max(dp[i] ...
 - Coffee Break
			
题目链接:Coffee Break Gym-101911A 题目大意:有一位员工想要利用喝咖啡来休息,他给了一个数组表示他想要喝咖啡的时间点(假设他喝咖啡用时1分钟),老板规定每次喝咖啡的时间间隔必 ...
 - OpenFOAM——高空腔内的湍流自然对流
			
本算例来自<ANSYS Fluid Dynamics Verification Manual>中的VMFL052: Turbulent Natural Convection Inside ...
 - MYSQL 什么时候用单列索引?什么使用用联合索引?
			
我一个表 students 表,有3个字段 ,id,name,age 我要查询 通过 name 和age,在这两个字段 是创建 联合索引?还是分别在name和age上创建 单列索引呢? 多个字段查询什 ...
 - Dolly
			
dolly - 必应词典 美['dɑli]英['dɒli] n.洋娃娃:(搬运重物的)台车 v.用独轮车运(物):用搅拌棒洗(衣):用捣棒捣碎(矿石) 网络多莉:多利:移动式摄影小车 变形复数:dol ...
 - SQLServer charindex函数, 查 某个字符 或 某个字符串 在 另一个字符串中的位置
			
一:charindex()语法 CHARINDEX ( expression1 , expression2 [ , start_location ] ) 解析: expression1 必需 ---要 ...
 - http statusCode(状态码)请求URL返回状态值的含义
			
http statusCode(状态码)请求URL返回状态值的含义 请求URL浏览器返回状态码的含义(http statusCode): 201-206都表示服务器成功处理了请求的状态代码,说明网页可 ...