注意!Chrome的请求mock可能是最佳的线上调试工具

业务场景

今天上班,老板让我查个bug ,说甲方提出一个疑问:推送页面第一行数据的【是否需要超限提示】栏显示不对,不应该是显示"否",而需要显示"是"。

这个界面是已经离职的同事做的,本着不看别人代码的原则,我猜一定是接口数据异常!于是,我打开控制台,梳理了接口的返回值:

js 复制代码
{
	"content":{
		"currPage":1,
		"list":[
			{
				"alarmDurationTime":"30",
				"createTime":"20230607112750",
				"createUser":"RY1539551643334680578",
				"deptId":"BM1671075409042526209",
				"deptName":"工程部",
				"id":16,
				"overrunTime":"90",
				"positionId":"GW1541311742399029250",
				"positionName":"工程经理(能源)",
				"season":2,
				"seasonName":"空调季",
				"updateTime":"20230621150155",
				"updateUser":"RY1539551643334680578",
				"valid":"1",
			},
			{
				"addPrompt":"2",
				"alarmDurationTime":"30",
				"createTime":"20230607112750",
				"createUser":"RY1539551643334680578",
				"deptId":"BM1671075409042526209",
				"deptName":"工程部",
				"id":16,
				"positionId":"GW1541311742399029250",
				"positionName":"工程经理(能源)",
				"season":2,
				"seasonName":"空调季",
				"updateTime":"20230621150155",
				"updateUser":"RY1539551643334680578",
				"valid":"1"
			},
			{
				"addPrompt":"1",
				"alarmDurationTime":"60",
				"createTime":"20220715162059",
				"createUser":"RY1541334884978860034",
				"deptId":"BM1538734603729711106",
				"deptName":"银泰集团",
				"id":6,
				"overrunTime":"90",
				"positionId":"GW1542444952122105858",
				"positionName":"集团工程物业助理总",
				"prompt":"将预警到事业部。",
				"season":2,
				"seasonName":"空调季",
				"updateTime":"20230717113230",
				"updateUser":"RY1539551643334680578",
				"valid":"1"
			},
            //  ....相同的结构,省略
		],
		"pageSize":20,
		"totalCount":10,
		"totalPage":1
	},
	"count":10,
	"result":"success"
}

很容易就能猜出来,这个显示的文字是根据返回值的addPrompt字段決定的,

对比一下返回的数据,错误的数据显然是后端没有返回addPrompt这个字段导致的。

为了验证自己的猜想,在不调试代码的前提,最快的就是拦截这个请求 ,然后给这个请求的第一条数据增加addPrompt字段即可!

拦截请求,比较好用的工具就是Charles了,但是下载安装什么的都很麻烦!

非常幸运的是,这一强大的功能,谷歌浏览器居然已经支持了!现在,我们来演示如何利用谷歌浏览器更改接口的返回值!

如何使用谷歌浏览器mock请求

mock一个请求

mock一个请求,我们首先需要打开浏览器的Network面板,找到请求后,点击鼠标右键

如图,面板中的Override headersOverride content 就是浏览器的mock功能!根据其英文意思,Override headers覆盖请求头、Override content覆盖响应体,显然,更改响应内容,点击Override content即可。

选择Override content后,我们需要选择一个文件夹用来存放mock信息

任意选择一个文件夹 后,我们需要点击浏览器页面上的【允许

点击允许后 ,接口前后出现一个紫色的点,代表mock状态,此时,我们就可以在面板里修改接口返回的数据了!

我们给第一条数据增加一个"addPrompt":"1"试试

编辑完后,我们直接ctrl+s进行保存,然后直接刷新页面见证奇迹!

刷新页面后,我们会发现我们的请求前有个紫色的点,这代表这个接口是被mock的,我们在观察下页面,显示已经正常了!看来,我们的bug猜想是正确的!

至此,我们没有看任何代码,只是用了浏览器自带的数据mock功能,就完成了bug的排查,高效且方便!

如何关闭mock请求

当我们呢bug验证完毕,如何关闭这个请求的mock呢?非常简单,右键mock的接口,点击【show all overrides】或【Override content】

然后点击清除按钮,最后刷新页面即可。

谷歌浏览器的请求mock还有什么使用场景

除了方便调试线上的功能外,谷歌浏览的mock请求功能,也可以方便我们进行一些代码测试!

很多时候,后端返回的数据都是固定的,前端开发的页面也是根据固定的结构做的,我们很少考虑后端返回数据异常的情况。然而,如果我们的代码如果没有做兼容,某些异常的数据可能让我们的页面直接崩溃!

因此,我们可以再开发阶段,不更改任何代码,直接使用浏览器更改接口返回的数据结构,可以让我们发现一些很难发现的bug,做出更好的产品!

比如,在上述的demo中,我更改了list的数据结构后(数组改成对象),页面直接就崩溃了

显然,是前端没有做好兼容!可加,谷歌浏览的mock请求功能能帮助我们更好的优化代码!

除此之外,我们还可以更改接口的请求体进行接口测试,甚至在某些网站通过更改请求的返回接口,看到更多本来看不到的东西

总结

通过本文,我们可以知道谷歌浏览器的请求mock功能对于线上的bug排查非常方便,也许,这是最佳的线上bug调试方式!此外,对于本地开发阶段的bug调试,这个功能也具备一定的优势,相信这个功能未来也会更加强大、好用!

相关推荐
0思必得02 分钟前
[Web自动化] 开发者工具性能(Performance)面板
运维·前端·自动化·web自动化·开发者工具
心灵的制造商7 分钟前
el-tree左侧新增类别和删除类别实例代码
前端·javascript·vue.js
爱吃无爪鱼9 分钟前
01-前端开发快速入门路线图
javascript·css·vue.js·typescript·前端框架·npm·node.js
冴羽9 分钟前
不知道怎么写 Nano Banana Pro 提示词?分享你一个结构化示例,复刻任意图片
前端·人工智能·aigc
IT_陈寒10 分钟前
JavaScript 性能优化:7个 V8 引擎隐藏技巧让你的代码提速200%
前端·人工智能·后端
脾气有点小暴17 分钟前
uniapp通用单张图片上传组件
前端·javascript·vue.js·uni-app·uniapp
小菜今天没吃饱22 分钟前
DVWA-XSS(stored)
前端·网络安全·xss·dvwa
云飞云共享云桌面22 分钟前
研发部门使用SolidWorks,三维设计云桌面应该怎么选?
运维·服务器·前端·网络·自动化·电脑
老华带你飞31 分钟前
茶叶商城|基于SprinBoot+vue的茶叶商城系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot
烛阴33 分钟前
不只是Public与Private:C#访问修饰符全方位解读
前端·c#