请求拦截器相关面试题
1. 请求拦截器和响应拦截器分别有什么作用请求拦截器管请求发出去之前的事响应拦截器管请求回来之后的事。继续追问请求拦截器一般做什么最常见的就是统一加 Token、公共请求头和请求配置。例如axios.interceptors.request.use(config{consttokengetToken();if(token){config.headers.AuthorizationBearer${token};}returnconfig;});继续追问响应拦截器一般做什么主要是统一处理响应数据和错误。比如axios.interceptors.response.use(response{returnresponse.data;},error{if(error.response?.status401){// Token 失效}returnPromise.reject(error);});2. 为什么要封装一层请求而不是每个地方直接用 Axios就是把重复的请求逻辑统一掉让业务代码只管调接口。比如业务代码只需要constuserawaitgetUser();而不用每个地方都写加 Token 设置 Header 处理 401 处理错误 设置超时3. Token 过期了怎么办收到 401 后刷新 Token刷新成功再把原请求重新发一次。流程请求 ↓ 401 ↓ 刷新 Token ↓ 成功 ↓ 重新请求原接口4. 如果同时有很多请求都返回 401 呢不能让每个请求都去刷新 Token只能同时刷新一次其他请求等它。例如请求 A ──→ 401 ──┐ 请求 B ──→ 401 ──┤ 请求 C ──→ 401 ──┤ ↓ 刷新 Token ↓ 成功 ↙ ↓ ↘ A重试 B重试 C重试常见做法是共享一个PromiseletrefreshPromisenull;asyncfunctionrefreshTokenOnce(){if(!refreshPromise){refreshPromiserefreshToken().finally((){refreshPromisenull;});}returnrefreshPromise;}核心就是同一时间只能有一个刷新请求。5. Token 刷新失败怎么办刷新失败就不能继续重试了一般清掉登录状态让用户重新登录。否则就会出现401 ↓ 刷新失败 ↓ 重新请求 ↓ 401 ↓ 继续刷新 ↓ ……所以必须有明确的失败出口。6. 所有请求失败都应该自动重试吗不应该要看失败原因和请求本身能不能安全重试。例如GET 查询 → 一般可以考虑重试 POST 创建订单 → 不能随便重试 支付请求 → 更不能简单自动重试因为有些请求重复执行会产生实际业务影响。7. 怎么做请求重试一般会限制重试次数而且只对明确可以重试的错误重试。例如asyncfunctionrequestWithRetry(request,maxRetry3){letcount0;while(true){try{returnawaitrequest();}catch(error){count;if(countmaxRetry||!canRetry(error)){throwerror;}awaitsleep(1000*count);}}}这里还可以继续追问为什么不能无限重试因为网络异常可能一直存在无限重试会把问题放大。8. 请求去重是怎么做的核心就是给请求生成一个唯一 Key相同请求正在执行时就不要重复发。例如method url params body ↓ requestKey第一次GET /user → 发请求第二次GET /user → 发现相同请求正在执行 → 复用 / 取消具体选择哪种要看业务需求。9. 怎么取消请求现在一般直接用 AbortController。constcontrollernewAbortController();fetch(/api/user,{signal:controller.signal});// 取消controller.abort();典型场景就是搜索输入 A ↓ 请求 A 输入 AB ↓ 取消 A ↓ 请求 AB 输入 ABC ↓ 取消 AB ↓ 请求 ABC避免旧请求回来以后把新数据覆盖掉。10. 所有错误都在响应拦截器里弹 Toast可以吗不建议请求层负责识别和处理错误具体怎么提示最好由业务决定。因为不同接口的错误处理可能不一样有的 → Toast 有的 → 页面展示 有的 → 静默处理 有的 → 自己处理如果请求层直接绑定 UI就容易变成请求层 ↓ Axios ↓ Toast ↓ 具体 UI 框架耦合会比较重。11. 请求拦截器是不是只能 Axios 有不是拦截请求是一个设计思路不是 Axios 独有的功能。Axios 自己提供了拦截器如果用fetch也可以自己封装asyncfunctionrequest(url,options){constconfigbeforeRequest(url,options);constresponseawaitfetch(config.url,config.options);returnafterResponse(response);}一道题怎么连续追面试官请求拦截器和响应拦截器有什么作用你先答请求拦截器管请求发出去之前的事响应拦截器管请求回来之后的事。面试官继续Token 怎么处理请求拦截器统一加 Token。Token 过期呢收到 401 就刷新 Token成功后重发原请求。如果同时 10 个请求都 401 呢不能让 10 个请求一起刷新只能刷新一次其他请求等刷新结果。刷新失败呢清掉登录状态让用户重新登录不能继续重试。那请求重试呢只重试明确可以安全重试的请求而且要限制次数。你还会考虑什么请求取消、请求去重、错误统一处理这些都可以根据业务需要加。这就比单纯回答“请求拦截器加 Token响应拦截器处理错误”明显高一个层次。

相关新闻

Python第二次作业全攻略:语法组合、经典实战与高频坑位解析

Python第二次作业全攻略:语法组合、经典实战与高频坑位解析

总有同学跟我说:第一次作业打印个“Hello World”、算个加减乘除,还能磕磕绊绊搞定,一到第二次作业就突然感觉不对劲了。题目看起来也认识,代码好像也能写几行,但一到运行就报错,或者写完了自己都不知道对不…

2026/10/7 16:40:19 阅读更多 →
ResForm 3.5+ Linux安装全指南:CentOS 7.9虚拟机部署避坑手册

ResForm 3.5+ Linux安装全指南:CentOS 7.9虚拟机部署避坑手册

简介:本资源是面向石油地质工程师与勘探专业学生的ResForm 3.5版本安装实践包,聚焦解决专业软件部署难、版本兼容性差及功能整合不全等实际问题。压缩包共10个文件,含5个可执行程序(含主安装程序setup.exe与核心运行文件RESFORM.e…

2026/10/8 18:59:52 阅读更多 →
农行缴费中心BRIDGE商户直连JAVA DEMO:签名证书与报文联调全解析

农行缴费中心BRIDGE商户直连JAVA DEMO:签名证书与报文联调全解析

简介:中国农业银行缴费中心BRIDGE新版商户直连DEMO(Java版,V1.4)是一套面向商户及Java开发者的支付接口对接参考工程,解决在自有平台中直接完成缴费下单、支付确认、退款与回调通知等交易环节的问题,适合正…

2026/10/8 19:04:51 阅读更多 →

最新新闻

从JDBC到MyBatis:详解Spring Boot连接池与事务隔离的实战要点

从JDBC到MyBatis:详解Spring Boot连接池与事务隔离的实战要点

搞 Java 的同学,几乎没人绕得开 JDBC 这个名字。不管你现在用的是 Spring Boot MyBatis,还是更偏底层的自研框架,只要连的是关系型数据库,JDBC 就是那条绕不过去的必经之路。这篇文章我不打算念 API 文档,而是把我自己…

2026/10/8 19:50:18 阅读更多 →
华为荣耀笔记本演示机解锁:恢复F10智能还原与系统重装指南

华为荣耀笔记本演示机解锁:恢复F10智能还原与系统重装指南

用过荣耀和华为笔记本的朋友应该都清楚,正经零售机和门店演示样机完全是两码事。演示机样机在出厂时会刷入一套专门的演示系统,桌面自动播广告、登录不了个人账号、很多设置项是灰色的,甚至部分机器连F10智能还原都被改得进不去。这些年我帮亲…

2026/10/8 19:50:18 阅读更多 →
OpenClaw本地部署保姆级指南:环境准备、模型对接与技能排雷

OpenClaw本地部署保姆级指南:环境准备、模型对接与技能排雷

最近OpenClaw在AI代理圈的热度高得离谱,群里天天有人问:这玩意儿到底怎么装?为什么照着教程一步步来,还是各种报错?作为把OpenClaw在Windows、Linux、还有手机上各折腾过一遍的人,我可以很负责地说&#xf…

2026/10/8 19:50:18 阅读更多 →
计算机系统原理自考备考:真题三轮复盘法+考点详解避坑指南

计算机系统原理自考备考:真题三轮复盘法+考点详解避坑指南

简介:2025年10月自考13015《计算机系统原理》真题答案详解考点,是一份面向自考考生和计算机初学者的复习资料,该课程属于计算机科学与技术自考本科的核心科目,覆盖从基础概念到综合计算的完整复习链条。内容包含选择题、填空题、名…

2026/10/8 19:50:18 阅读更多 →
Linux进程优先级:CPU不高却卡顿的排障与分析

Linux进程优先级:CPU不高却卡顿的排障与分析

你有没有遇到过这种场景:一台服务器的CPU使用率明明只有百分之二三十,但业务接口的P99延迟却高得离谱,SSH连上去敲个命令都要卡上半天。我之前排查过一个典型的案例,最后根因就落在Linux 进程优先级上——某个后台批处理任务在不知…

2026/10/8 19:50:18 阅读更多 →
Dify+Ollama+DeepSeek-r1私有化部署实战:从选型到知识库落地

Dify+Ollama+DeepSeek-r1私有化部署实战:从选型到知识库落地

简介:面向需要在企业内网搭建私有化AI服务的程序员,幕僚云私有化部署DifyOllamaDeepSeek-r1提供了一套可复现的落地资料。资源包内共36个文件,包含docker-27.4.1.tgz离线安装包、docker-compose-linux-x86_64编排文件、docker daemon.json与d…

2026/10/8 19:49:15 阅读更多 →

日新闻

抖音用户主页视频数据爬虫详解:点赞、收藏、分享字段抓取与 TaoToken 统一 Key 配置

抖音用户主页视频数据爬虫详解:点赞、收藏、分享字段抓取与 TaoToken 统一 Key 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:00:03 阅读更多 →
AI 编程 Trae 国内版与国际版一篇讲透:TaoToken 统一 Key 接入实测

AI 编程 Trae 国内版与国际版一篇讲透:TaoToken 统一 Key 接入实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:00:06 阅读更多 →
Claude Desktop 配置第三方推理接口教程:用 TaoToken 统一 Key 打通 API 调用

Claude Desktop 配置第三方推理接口教程:用 TaoToken 统一 Key 打通 API 调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:00:07 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →