Vue中Axios网络请求封装-企业最常用封装模式

简介: 本教程介绍如何安装并配置 Axios 实例,包含请求与响应拦截器,实现自动携带 Token、错误提示及登录状态管理,适用于 Vue 项目。

1.通过命令安装axios

yarn add axios
&
npm install axios --save

2.创建一个js文件

// utils/request.js
import axios from 'axios'
import {
    MessageBox, Message } from 'element-ui' // 引入element-ui库
import store from '@/store'    // vuex

// 创建一个axios实例
const service = axios.create({
   
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // withCredentials: true, // 当跨域请求时发送cookie
  timeout: 5000 // 请求超时
})

// 请求拦截器
service.interceptors.request.use(
  config => {
   
    // 在发送请求之前做些什么

    if (store.getters.token) {
   
      // 让每个请求携带令牌
      config.headers['Token'] = store.getters.token
    }
    return config
  },
  error => {
   
    // 处理请求错误
    console.log(error)
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  response => {
   
    const res = response.data

    // 如果定制代码不是0,则判定为错误。
    if (res.code !== 0) {
   
      Message({
   
        message: res.message || 'Error',
        type: 'error',
        duration: 5 * 1000
      })

      // 50008:非法令牌;50012:其他客户端登录;50014:令牌过期;
      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
   
        // 重新登陆
        MessageBox.confirm('您已注销,您可以取消停留在此页面或重新登录', '确认注销', {
   
          confirmButtonText: '重新登录',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
   
          // 移除vue存储的token信息
          store.dispatch('user/resetToken').then(() => {
   
            location.reload()
          })
        })
      }
      return Promise.reject(new Error(res.message || 'Error'))
    } else {
   
      // return res.data
      return res
    }
  },
  error => {
   
    console.log('err' + error)
    Message({
   
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default service
目录
相关文章
|
6月前
|
负载均衡 算法 安全
基于Reactor模式的高性能网络库之线程池组件设计篇
EventLoopThreadPool 是 Reactor 模式中实现“一个主线程 + 多个工作线程”的关键组件,用于高效管理多个 EventLoop 并在多核 CPU 上分担高并发 I/O 压力。通过封装 Thread 类和 EventLoopThread,实现线程创建、管理和事件循环的调度,形成线程池结构。每个 EventLoopThread 管理一个子线程与对应的 EventLoop(subloop),主线程(base loop)通过负载均衡算法将任务派发至各 subloop,从而提升系统性能与并发处理能力。
345 3
|
6月前
基于Reactor模式的高性能网络库github地址
https://github.com/zyi30/reactor-net.git
160 0
|
6月前
|
机器学习/深度学习 存储 监控
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
企业文件服务器审计是保障信息安全、确保合规的关键措施。DataSecurity Plus 是由卓豪ManageEngine推出的审计工具,提供全面的文件访问监控、实时异常告警、用户行为分析及合规报告生成功能,助力企业防范数据泄露风险,满足GDPR、等保等多项合规要求,为企业的稳健发展保驾护航。
172 0
|
9月前
|
供应链 安全 网络协议
|
9月前
|
人工智能 Kubernetes 安全
生成式AI时代,网络安全公司F5如何重构企业防护体系?
生成式AI时代,网络安全公司F5如何重构企业防护体系?
233 9
|
4月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
581 0
|
6月前
|
缓存 索引
基于Reactor模式的高性能网络库之缓冲区Buffer组件
Buffer 类用于处理 Socket I/O 缓存,负责数据读取、写入及内存管理。通过预分配空间和索引优化,减少内存拷贝与系统调用,提高网络通信效率,适用于 Reactor 模型中的异步非阻塞 IO 处理。
223 3
|
8月前
|
运维 安全 网络性能优化
工业路由器:企业网络的中流砥柱和个人路由器有什么区别?卓伊凡
工业路由器:企业网络的中流砥柱和个人路由器有什么区别?卓伊凡
849 11
工业路由器:企业网络的中流砥柱和个人路由器有什么区别?卓伊凡
|
9月前
|
人工智能 供应链 调度
|
9月前
|
安全 架构师 云计算
玄鹿网络 | 中小企业如何借势互联网,打造强势网络品牌?
玄鹿网络在互联网+时代,中小企业面临机遇与挑战,品牌成为企业生存发展的核心灵魂。玄鹿网络通过网络营销助力中小企业塑造品牌形象,其中问答营销可树立良好口碑,B2B网站推广能获取高质量流量,建立企业官网则是展示品牌的窗口。阿里云建站产品如【云·速成美站】和【云·企业官网】,提供快速、稳定、安全的建站服务,助力企业打造独特网络名片,在竞争中脱颖而出。
玄鹿网络 | 中小企业如何借势互联网,打造强势网络品牌?

热门文章

最新文章