
axios之http请求
添加公共参数:例如添加 token、用户ID等对于API调用必不可少的授权信息。 loading弹窗效果:在请求发送之前显示loading提示,提升用户体验。 参数处理:对请求参数进行格式化处理,例如对POST请求的数据进行URL编码。 格式化响应数据:将返回数据转换为更易处理的格式。 异常处理:对接收到的错误信息进行处理,并提供友好的用户反馈。 自定义业务逻辑:在数据返回后扩展其他业务流程。 安装axios插件并创建拦截器:
发布日期:2021-05-18 09:37:29
浏览次数:22
分类:精选文章
本文共 1701 字,大约阅读时间需要 5 分钟。
Axios 拦截器实用指南
一、Axios 拦截器简介
Axios 拦截器是一种在HTTP 请求和响应处理过程中,可以自定义操作的机制。它由两个部分组成:请求拦截器和响应拦截器。通过这些拦截器,我们可以在请求发送之前或在数据返回后对数据进行加工或状态管理。
二、请求拦截器的功能
请求拦截器主要用于处理发送请求时的逻辑操作,常见的包括:
三、响应拦截器的功能
响应拦截器则用于处理返回数据后的逻辑操作,主要常见场景包括:
四、拦截器的核心实现
在实际项目中,拦截器的实现通常包括以下几个步骤:
import axios from 'axios'; // 创建请求拦截器axios.interceptors.request.use((config) => { // 示例:从 localStorage 获取 token const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config;});
- 处理响应数据:
- 减少代码复杂度:避免过多嵌套,保持逻辑清晰。
- 统一处理异常:确保不同错误类型都有相应的处理方式。
- 及时清除loading弹窗:避免长时间加载导致用户体验下降。
axios.interceptors.response.use((response) => { // 示例:清除loading弹窗 // 其他处理逻辑 return response;});
五、实际应用示例
基于以上理论,以下是项目中常见的拦截器实现场景:
1. 获取用户授权信息
// 加载用户信息const user = JSON.parse(localStorage.getItem('user'));if (user) { axios.defaults.headers.common['Authorization'] = `Bearer ${user.token}`;}
2. dizzy loading 弹窗
axios.interceptors.request.use((config) => { constiyim = localStorage.getItem('ismu'); if (iyim === '1') { config.headers.Authorization = 'Bearer ' +onnement; Toast.loading({ message: '加载中...' }); } return config;});
3. 错误处理
axios.interceptors.response.use((error) => { if (error.response.status === 401) { localStorage.removeItem('token'); // 调整页面状态 return null; } else { showErrorToast(error.message); // 其他处理逻辑 }});
六、优化建议
通过合理运用axios拦截器,可以显著提升项目的用户体验和数据处理的统一性,实现更稳健的网络请求管理。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月30日 17时06分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【自考】之信息资源管理(一)
2019-03-12
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
IDEA 找不到 Persistence窗口解决办法
2019-03-12
C++ Primer Plus读书笔记:循环读取(错误处理)
2019-03-12
Form窗体属性
2019-03-12
vue 错误收集
2019-03-12
Java选择排序算法实现
2019-03-12
00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
2019-03-12
00013.05 字符串比较
2019-03-12
Effective Java 读书笔记
2019-03-12
SpringBoot使用@Email报错误
2019-03-13
Rabbitmq的内存磁盘监控
2019-03-13
访问servlet时弹出文件下载框解决方法
2019-03-13
IDEA-@Slf4j和log标签&@Data(Lombok)无效
2019-03-13
Thymeleaf 生成下标,索引,使用Stat变量
2019-03-13
ValueError: Unexpected end of file.
2019-03-13