前端快闪四: 拦截axios请求和响应
马甲哥继续在同程艺龙写一点大前端:
今天我们来了解一下 如何拦截axios请求/响应?
Axios 是一个流行的 JavaScript 库,用于从浏览器或 Node.js 发出 HTTP 请求。它基于 XMLHttpRequest API 构建,提供简单易用的接口来发送和接收数据。axios是一个基于 promise 的网络请求库,可以用于浏览器和 node.js, promise 类似于C#的Task async/await机制,以同步的代码风格编写异步代码。
axios一般发起的是ajax请求(还是http请求),我们一般会封装处理一些通用的 请求/响应动作。
比如马甲哥就遇到:
- 在每次ajax跨域请求时,允许携带第三方凭据(cookie、authorization)
- 封装4xx响应码的处理逻辑
其中关键的就是用到axios的拦截器:
export interface AxiosInterceptorManager<V> { use<T = V>(onFulfilled?: (value: V) => T | Promise<T>, onRejected?: (error: any) => any): number; eject(id: number): void; }
仔细围观use
sdk,支持传入两个函数,
表示请求(响应)一旦准备好了/失败了,你可以注入的动作。
精简代码如下:
import axios from 'axios'; import { message } from 'antd' const service = axios.create({ baseURL: process.env.REACT_APP_APIBASEURL, timeout: 5000 }) // 添加请求拦截器: 这是向后台服务器发起的ajax请求 service.interceptors.request.use((reqconfig) => { reqconfig.withCredentials = true; return reqconfig; }, (error) => { return Promise.reject(error); }); // 添加响应拦截器 service.interceptors.response.use((response) => { return response; }, (error) => { if (error.response && error.response.status === 401) { message.error("无权限操作,请联系tvs运维.") } return Promise.reject(error); });
以上对于前端老鸟不值一提,但是上述拦截动作对于把握全栈web开发必不可少。
本文来自博客园,作者:{有态度的马甲},转载请注明原文链接:https://www.cnblogs.com/JulianHuang/p/15386779.html
欢迎关注我的原创技术、职场公众号, 加好友谈天说地,一起进化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?