Axios的封装(请求拦截器和路由守卫)

Axios 全局配置以及封装使用

Axios 官网
了解和为了以后项目的方便,到时候可以直接复制粘贴使用,不需要自己再重写一次axios,自己写了一个通用的拦截器 request.js 和 路由守卫 permission.js,下次有新项目就可以直接使用了,不需要自己再重写。

全局配置:

import axios from ‘axios’

请求拦截器: request.js

const service = axios.create({
	baseURL: process.env.VUE_APP_BASE_API, // url
	timeout: 5000  // 响应时间
})

// 存储获取到的token
service.interceptors.resquest.use(
	(config) =>{
		config.headers.Authorization = localStorage.getItem('token')
		return config
	}
)


service.interceptors.response.use(
	(response) => {
	// 结构 data 和 meta
	const { data , meta } = response.data 
	// success
	if (meta.status === 200 || meta.status === 201){
			return data		
		} else {
			return Promise.reject(new Error(meta.msg))
		}
	},(error) =>{ // error
		error.response
		return Promise.reject(new Error(error.response.data))
	}
)
// 导出
export default service

路由守卫 permission.js

import router from ‘./index’
import store from ‘@/sotre’ // 获取token,因为状态存储到了vuex中

// 定义一个白名单
const whiteList = ['/login']

router.beforeEach((to,from,next) =>{
	if(store.getters.token) {
		if(to.path === '/login') {
			next('/') // 去首页
		} else {
			next()
		}
	} else {
		if(whiteList.includes(to.path)) { // 到我们页面去的路径
			next()
		} else {
			next('/login')
		}
	}
})

注: 什么是白名单呢? 通俗的说:“就是用户在没有登陆的情况下也可以进行访问的页面就是所谓的白名单。”

获取token getters.js

注: state.app.token 中的app是定义的一个js文件名

export default {
	token:  state => state.app.token
}

记得要去main.js中去导入这个permission.js

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值