【分享】前端线上紧急排查工具

简介: 【分享】前端线上紧急排查工具

写作背景:


     在项目运维期间,往往出故障的情况很大程度都是因为数据与预期不一致导致的,在没办法登录生产环境的情况下,我们需要在既不更改代码(把报文贴到代码里,你别着急提交到master就好)又能模拟故障接口数据的时候就需要用到这样的插件(Ajax Interceptor)。


使用场景:


  1. 第一个就是开发中当有前置接口阻碍不能调试后续接口的情况,可以通过插件模拟数据。
  2. 第二个就是使用生产数据在开发环境排查因数据问题造成的系统故障。
  3. 第三个就是在上线前夕紧急修复因数据超预期导致的系统故障(这时候不建议将报文贴到代码里面)。


插件页面介绍:


具体的使用文末给出了插件作者的文章链接,可以详细阅读使用。

image.png


扩展插件:


这个插件挺简洁的但是有些场景还是不支持,就比如说下面这个Issues说的,所以我花了点时间尝试进行了一下扩展。image.png


调整插件布局:

     通过观察项目,iframe文件夹内为插件的主界面,引用了react包,我们可以通过仿照匹配模式的代码来处理请求方式如何设置,增加完下面的两块代码后通过执行build命令可以完成构建。


增加请求方式切换的Select组件:
<Select defaultValue={requestType} style={{width: '30%'}} onChange={e => this.handleRequestTypeChange(e, i)}>
    <Option value="GET">GET</Option>
    <Option value="POST">POST</Option>
    <Option value="PUT">PUT</Option>
    <Option value="DELETE">DELETE</Option>
</Select>
复制代码

增加请求方式切换事件
handleRequestTypeChange = (val, i) => {
    window.setting.ajaxInterceptor_rules[i].requestType = val;
    this.set('ajaxInterceptor_rules', window.setting.ajaxInterceptor_rules);
    this.forceUpdate();
  }
复制代码


加载插件:

     我们页面修改后就可以添加到Chrome浏览器预览了,我们不考虑插件打包,按下图直接添加即可,开发者模式记得打开一下:

image.png


如何让请求方式的配置生效:

     我们这时候需要处理的就是pageScripts\main.js文件,这个文件里面包含的主要的两个函数myFetchmyXHR,分别重写了系统内置的fetchXMLHttpRequest,我们分别来对两种请求读取请求方式与配置的请求方式对比,决定是否替换响应内容。


处理fetch请求:

     通过查看MDN得到使用fetch请求时method的三种设置情况:

  1. 仅传递请求地址的时候,默认请求方式为GET,无法通过参数读取;
  2. 传递1个参数但类型是Request,可以在对象中读取到请求方式;
  3. 传入两个参数,第一个参数为请求地址,第二个参数为opts选项,可以在opts对象中读取请求方式。
let openInterception = false;
// 查找method并决定是否拦截
let haveMethod = false;
for (const arg of args) {
  if(arg['method']){
    haveMethod = true;
    openInterception = arg['method'].toLocaleUpperCase() === requestType;
  }
}
// 未设置method的按默认GET方式处理,需要对比requestType是否为默认的GET方式
if(!haveMethod) {
  openInterception = requestType === "GET";
}
。。。
if (matched && openInterception) {
  window.dispatchEvent(new CustomEvent("pageScript", {
    detail: {url: response.url, match}
  }));
  txt = overrideTxt;
}
复制代码

处理XMLHttpRequest请求:

     直接使用这个对象发请求已经是好久之前的事了,通过查询和观察对象并没有直接找到请求参数可以怎么读取,但既然能可定会通过open函数来传递请求参数,那我就重写一个open函数把请求的参数记录一下吧。

let open = XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function(...args){
  this['requestParams'] = args;
  open.apply(this, args);
}
复制代码

在每次接到请求后来判断requestParams中是否包含特有的请求方式来启动开关:

let openInterception = xhr.requestParams.find(v => v === requestType) ? true : false;
复制代码


源码分享:


     ajax-interceptor(支持设置Method),进行了简单的测试感觉还行,拉取代码后直接加载已解压扩展程序使用即可。不知道这个思路是否完全符合这个Issuse呀,有不同意见的还请交流一下。



相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
929 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
2月前
|
人工智能 前端开发 小程序
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
108 31
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
|
2月前
|
前端开发 JavaScript 开发者
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
162 4
|
3月前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
89 8
|
3月前
|
监控 前端开发 JavaScript
前端稳定性工具-Sentry
【11月更文挑战第9天】Sentry 是一个开源的错误和性能监控平台,支持多种编程语言和框架。它能够捕获前端应用中的各种错误和性能问题,提供详细的错误信息和用户行为关联,帮助开发团队快速定位和解决问题,优化应用性能。但需注意隐私保护、数据准确性和成本控制。
228 3
|
3月前
|
Web App开发 前端开发 JavaScript
前端开发的秘密武器:这些工具让你轻松应对各种复杂布局!
【10月更文挑战第31天】前端开发充满挑战,尤其是在处理复杂布局时。本文介绍了几种关键工具和技术,如HTML和CSS基础、Firefox开发者工具、Visual Studio Code以及Vue、React和Angular等前端框架,帮助开发者高效应对复杂布局,提升代码质量和用户体验。
59 2
|
3月前
|
前端开发 JavaScript API
前端开发的秘密武器:这些工具让你轻松应对各种复杂动画效果!
【10月更文挑战第30天】前端开发中,动画效果为页面增添了无限生机。CSS3的@keyframes规则和JavaScript动画库如GSAP、Anime.js等,使开发者能轻松实现从简单到复杂的动画效果。掌握动画原理和设计原则,结合工具和库,可以创造出既美观又实用的动画,提升用户体验。
81 4
|
4月前
|
自然语言处理 前端开发 JavaScript
推荐 10 个前端开发会用到的工具网站
本文介绍了多个前端开发工具,包括 Web Design Museum、Landing Page、Google Fonts、Lorem Ipsum、Animista、Blobmaker、Spline、CodeToGo、UnusedCSS 和 Responsively,帮助开发者提高效率和项目质量。这些工具涵盖了设计、动画、代码片段管理、响应式测试等多个方面。
255 0
推荐 10 个前端开发会用到的工具网站
|
4月前
|
存储 前端开发 JavaScript
前端模块化打包工具的深度解析
【10月更文挑战第13天】前端模块化打包工具的深度解析
|
4月前
|
存储 前端开发 JavaScript
前端开发中的状态管理概述与工具选择
【10月更文挑战第7天】前端开发中的状态管理概述与工具选择
80 0

热门文章

最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 4
    详解智能编码在前端研发的创新应用
  • 5
    巧用通义灵码,提升前端研发效率
  • 6
    智能编码在前端研发的创新应用
  • 7
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 8
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 9
    抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
  • 10
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 1
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
    29
  • 2
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    51
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 4
    巧用通义灵码,提升前端研发效率
    93
  • 5
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    141
  • 6
    详解智能编码在前端研发的创新应用
    96
  • 7
    智能编码在前端研发的创新应用
    83
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    121
  • 10
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    75