全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Vue+axios 实现http拦截及路由拦截实例

现如今,每个前端对于Vue都不会陌生,Vue框架是如今最流行的前端框架之一,其势头直追react.最近我用vue做了一个项目,下面便是我从中取得的一点收获.

基于现在用vue+webpack搭建项目的文档已经有很多了,我就不再累述了.

技术栈

  1. vue2.0
  2. vue-router
  3. axios

拦截器

首先我们要明白设置拦截器的目的是什么,当我们需要统一处理http请求和响应时我们通过设置拦截器处理方便很多.

这个项目我引入了element ui框架,所以我是结合element中loading和message组件来处理的.我们可以单独建立一个http的js文件处理axios,再到main.js中引入.

/**
 * http配置
 */
// 引入axios以及element ui中的loading和message组件
import axios from 'axios'
import { Loading, Message } from 'element-ui'
// 超时时间
axios.defaults.timeout = 5000
// http请求拦截器
var loadinginstace
axios.interceptors.request.use(config => {
 // element ui Loading方法
 loadinginstace = Loading.service({ fullscreen: true })
 return config
}, error => {
 loadinginstace.close()
 Message.error({
 message: '加载超时'
 })
 return Promise.reject(error)
})
// http响应拦截器
axios.interceptors.response.use(data => {// 响应成功关闭loading
 loadinginstace.close()
 return data
}, error => {
 loadinginstace.close()
 Message.error({
 message: '加载失败'
 })
 return Promise.reject(error)
})

export default axios

这样我们就统一处理了http请求和响应的拦截.当然我们可以根据具体的业务要求更改拦截中的处理.

路由拦截

我们可以通过路由拦截做什么?我认为最主要的便是对权限的控制,比如有的页面需要登录了才能进入,有些页面不同身份渲染不同.接下来简单的讲一下登录拦截.

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

const router = new Router({
 routes: [
 {
  path: '/',
  /*
  * 按需加载 
  */
  component: (resolve) => {
  require(['../components/Home'], resolve)
  }
 }, {
  path: '/record',
  name: 'record',
  component: (resolve) => {
  require(['../components/Record'], resolve)
  }
 }, {
  path: '/Register',
  name: 'Register',
  component: (resolve) => {
  require(['../components/Register'], resolve)
  }
 }, {
  path: '/Luck',
  name: 'Luck', 
  // 需要登录才能进入的页面可以增加一个meta属性
  meta: { 
  requireAuth: true
  },
  component: (resolve) => {
  require(['../components/luck28/Luck'], resolve)
  }
 }
 ]
})
// 判断是否需要登录权限 以及是否登录
router.beforeEach((to, from, next) => {
 if (to.matched.some(res => res.meta.requireAuth)) {// 判断是否需要登录权限
 if (localStorage.getItem('username')) {// 判断是否登录
  next()
 } else {// 没登录则跳转到登录界面
  next({
  path: '/Register',
  query: {redirect: to.fullPath}
  })
 }
 } else {
 next()
 }
})

export default router

这样就做好了登录拦截.我们只需在main.js中引入router就可以了.

实现权限的控制我们还可以通过Vuex来实现,但是如果是小型项目就没必要引入Vuex了.

以上是我做项目过程中的一些收获,由于入Vue的坑也才两月不到,有些地方可能有不足之处,欢迎大家指正,我会悉心听取.也希望大家多多支持。


# vue  # axios  # 拦截  # 拦截器  # axios拦截设置和错误处理方法  # axios全局请求参数设置  # 请求及返回拦截器的方法  # Vue.js axios响应拦截如何获取返回状态码  # 判断是否  # 我们可以  # 加载  # 我是  # 我就  # 好了  # 我会  # 还可以  # 有很多  # 做什么  # 只需  # 我认为  # 就没  # 我用  # 能有  # 现如今  # 欢迎大家  # 我做  # 当我们 


相关文章: 如何有效防御Web建站篡改攻击?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  如何用y主机助手快速搭建网站?  ,有什么在线背英语单词效率比较高的网站?  大型企业网站制作流程,做网站需要注册公司吗?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何在宝塔面板创建新站点?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  如何在自有机房高效搭建专业网站?  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何用好域名打造高点击率的自主建站?  学校建站服务器如何选型才能满足性能需求?  如何在阿里云ECS服务器部署织梦CMS网站?  简单实现Android验证码  阿里云网站制作公司,阿里云快速搭建网站好用吗?  南京网站制作费用,南京远驱官方网站?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  手机网站制作与建设方案,手机网站如何建设?  建站之星如何快速更换网站模板?  建站之星安装模板失败:服务器环境不兼容?  如何快速启动建站代理加盟业务?  如何挑选高效建站主机与优质域名?  Swift中swift中的switch 语句  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  大同网页,大同瑞慈医院官网?  c++ stringstream用法详解_c++字符串与数字转换利器  建站VPS能否同时实现高效与安全翻墙?  如何选择高效响应式自助建站源码系统?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  详解jQuery停止动画——stop()方法的使用  高性能网站服务器配置指南:安全稳定与高效建站核心方案  头像制作网站在线制作软件,dw网页背景图像怎么设置?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  如何在服务器上三步完成建站并提升流量?  ,网站推广常用方法?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何通过VPS搭建网站快速盈利?  如何选购建站域名与空间?自助平台全解析  c# Task.ConfigureAwait(true) 在什么场景下是必须的  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  ,在苏州找工作,上哪个网站比较好?  如何选择高效便捷的WAP商城建站系统?  海南网站制作公司有哪些,海口网是哪家的?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一) 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。