当前位置: 首页 > news >正文

Vue.js教学第十八章:Vue 与后端交互(二):Axios 拦截器与高级应用

Vue 与后端交互(二):Axios 拦截器与高级应用

在上一篇文章中,我们学习了 Axios 的基本用法,包括如何发送不同类型的 HTTP 请求以及基本的配置选项。本文将深入剖析 Axios 的拦截器功能,探讨请求拦截器和响应拦截器的作用、配置方法和应用场景,通过实例展示如何利用拦截器优化前后端交互流程。


一、Axios 拦截器概述

Axios 拦截器是 Axios 提供的一项强大功能,允许开发者在请求发送前和响应返回后进行拦截处理。通过拦截器,可以实现诸如添加请求头、处理请求超时、统一处理响应错误等多种功能,有效优化前后端交互流程,提升代码的可维护性和可读性。


二、请求拦截器

(一)作用

请求拦截器主要用于在请求发送前对请求进行处理,常见的应用场景包括:

  • 添加认证头信息(如 Token)

  • 修改请求数据格式

  • 添加请求加载状态提示

  • 处理请求超时

(二)配置方法

// 添加请求拦截器
axios.interceptors.request.use(config => {// 在发送请求之前做些什么console.log('请求拦截器:', config.method, config.url);// 例如,添加认证头信息const token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}// 添加请求加载状态提示// 可以在这里显示 loading 状态// this.showLoading(); (在 Vue 组件中)return config;},error => {// 对请求错误做些什么console.error('请求错误:', error);return Promise.reject(error);}
);

(三)应用场景实例

1. 添加认证头信息

在用户登录后,通常需要在后续请求中携带认证信息(如 Token),以便后端验证用户身份。通过请求拦截器,可以在每个请求发送前自动添加认证头信息。

// 添加请求拦截器 - 添加认证头信息
axios.interceptors.request.use(config => {const token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;
});
2. 处理请求超时

可以在请求拦截器中设置请求超时时间,并在超时时进行相应的处理。

// 添加请求拦截器 - 处理请求超时
axios.interceptors.request.use(config => {config.timeout = 5000; // 设置超时时间为 5000 毫秒return config;
});
3. 添加请求加载状态提示

在发送请求时,显示加载状态提示,提升用户体验。可以在请求拦截器中显示加载提示,在响应拦截器中隐藏加载提示。

// 在 Vue 组件中
export default {data() {return {loading: false};},mounted() {this.setupIntercep
http://www.lqws.cn/news/99073.html

相关文章:

  • 从汇编的角度揭秘C++引用,豁然开朗
  • 硬件工程师笔记——555定时器应用Multisim电路仿真实验汇总
  • CRM管理软件的数据可视化功能使用技巧:让数据驱动决策
  • SpringBoot 之 JWT
  • 8.RV1126-OPENCV 视频中添加LOGO
  • Web后端快速入门(Maven)
  • OSCP备战-BSides-Vancouver-2018-Workshop靶机详细步骤
  • Vert.x学习笔记-Verticle原理解析
  • Java数据校验:确保数据完整性和正确性
  • Modbus转Ethernet IP赋能挤出吹塑机智能监控
  • ChatGPT实战嵌入式开发应用指南与代码演示
  • 笔记本/台式C盘扩容:删除、压缩、跨分区与重分配—「小白教程」
  • 调用.net DLL让CANoe自动识别串口号
  • [Java恶补day14] 56. 合并区间
  • SQL 筛选出在表1但不在表2中的数据
  • Express 集成Sequelize+Sqlite3 默认开启WAL 进程间通信 Conf 打包成可执行 exe 文件
  • 【Redis】set 类型
  • qt控制台程序与qt窗口程序在读取数据库中文字段的差异!!巨坑
  • MySQL 如何判断某个表中是否存在某个字段
  • 基于PostGIS的GeoTools执行原生SQL查询制图实践-以贵州省行政区划及地级市驻地为例
  • React从基础入门到高级实战:React 高级主题 - React设计模式:提升代码架构的艺术
  • 结构性设计模式之Composite(组合)
  • Spring AI 项目实战(一):Spring AI 核心模块入门
  • MongoDB数据库学习
  • 宇树科技更名“股份有限公司”深度解析:机器人企业IPO前奏与资本化路径
  • 业态即战场:零售平台的生意模型与系统设计解构
  • EtherCAT背板方案:方芯半导体工业自动化领域的高速、高精度的通信解决方案
  • 定时器时钟来源可以从输入捕获引脚输入
  • RK3568-移植codesys-runtime
  • 【RabbitMQ】- Channel和Delivery Tag机制