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

深入了解 Axios 拦截器

深入了解 Axios 拦截器

本文将向您介绍什么是 Axios 拦截器以及如何使用它们。通过分步指南和示例代码,您将学习如何使用 Axios 拦截器来处理请求和响应,并添加授权和错误处理。

什么是 Axios 拦截器?

Axios 拦截器允许您在请求发送和响应接收过程中拦截、操作和修改它们。Axios 提供了两种类型的拦截器:请求拦截器和响应拦截器。

请求拦截器允许您在发送请求之前修改请求的配置或添加自定义的头部和标记。它们也可以用于添加身份验证和授权令牌,以确保只有经过身份验证的用户才能访问受保护的资源。

响应拦截器允许您在接收响应之前拦截和处理它们。它们可以用于处理响应错误和重定向,以及过滤或转换响应数据。

使用 Axios 拦截器

让我们以请求拦截器为例来学习如何使用 Axios 拦截器。在您的 JavaScript 文件中添加以下代码:

import axios from ‘axios’;

axios.interceptors.request.use(
config => {
const token = localStorage.getItem(‘authToken’);
if (token) {
config.headers.Authorization = Bearer ${token};
}
return config;
},
error => {
return Promise.reject(error);
}
);
在上述代码中,我们使用 .interceptors 属性将请求拦截器添加到 Axios。.request.use() 方法接收两个函数参数:第一个函数在发送请求之前被调用,它接收一个 Axios 请求配置对象,并返回一个新的配置对象。在上述代码中,我们从本地存储中获取授权令牌,并把它添加到请求头中的 Authorization 标头中。

第二个函数是在请求发生错误时调用的。在这个例子中,我们简单地返回一个被拒绝的 Promise 对象,以便在链式调用中处理错误。

接下来,让我们学习如何使用响应拦截器。在您的 JavaScript 文件中添加以下代码:

axios.interceptors.response.use(
response => {
if (response.data && response.data.error_code) {
return Promise.reject(response.data);
}
return response;
},
error => {
if (error.response && error.response.status === 401) {
localStorage.removeItem(‘authToken’);
window.location.href = ‘/login’;
}
return Promise.reject(error.response.data);
}
);
在上述代码中,我们使用 .interceptors 属性将响应拦截器添加到 Axios。.response.use() 方法接收两个函数参数:第一个函数在成功响应时调用,它接收响应对象,并返回新的响应对象或 Promise 对象。在上述代码中,我们检查响应数据是否包含错误代码,如果是,我们就返回一个被拒绝的 Promise 对象。否则,我们将返回原始响应对象。

第二个函数在响应发生错误时调用。在这个例子中,我们检查响应状态码是否为 401(未经授权),如果是,我们就从本地存储中删除授权令牌,并重定向到登录页面。否则,我们返回响应数据的 Promise 对象,以便在链式调用中处理错误。

总结

通过本文,您学习了如何使用 Axios 拦截器来处理请求和响应,并添加授权和错误处理。您可以使用这些拦截器来添加自定义头部、标记、身份验证和授权令牌,并处理响应错误和重定向。Axios 提供了许多其他配置选项和参数来进一步定制和控制请求和响应的行


http://www.kler.cn/news/163088.html

相关文章:

  • log4j(日志的配置)
  • C语言WFC实现绘制贝塞尔曲线的函数
  • 【交流】PHP生成唯一邀请码
  • 安装node.js并创建第一个vue项目
  • 【EI会议征稿中】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)
  • Navicat 技术指引 | 适用于 GaussDB 分布式的数据迁移工具
  • 华为配置Smart Link主备备份示例
  • vue3递归组件---树形组件
  • 【数据仓库-10】-- 数据仓库、数据湖和湖仓一体对比
  • 剑指 Offer(第2版)面试题 21:调整数组顺序使奇数位于偶数前面
  • 做数据分析为何要学统计学(4)——什么问题适合使用卡方检验?
  • 考研真题数据结构
  • python3安装redis
  • Navicat 技术指引 | 适用于 GaussDB 分布式的模型功能
  • Django的logging-日志模块的简单使用方法
  • 微信小程序网络请求二次封装
  • Java项目开发,业务比较复杂如何减少bug
  • 基于深度学习yolov5实现安全帽人体识别工地安全识别系统-反光衣识别系统
  • ArkTS快速入门
  • CentOS常用基础命令大全(linux命令)2
  • Pycharm Jupyter ModuleNotFoundError 问题解决
  • 【前端】CSS基础(学习笔记)
  • Python合并一个 Excel 里面的多张表
  • 虚幻学习笔记10—C++函数与蓝图的通信
  • django与数据库交互关于当前时间的坑
  • 2023.12.7 关于 MySQL 事务详解
  • C#云LIS系统源码 B/S架构,SaaS模式,可扩展性强
  • 数据结构——二叉树的链式结构
  • pcl-3 pcl结合opencv做svm分类(法向量特征数据)
  • 如何运用gpt改写出高质量的文章 (1)