找回密码
 立即注册
首页 业界区 安全 Web开发中非幂等流程性接口的调试小技巧【附视频】 ...

Web开发中非幂等流程性接口的调试小技巧【附视频】

渣骑 2025-6-1 20:43:25
这是一个Web开发实践中,一个实用的对于非幂等,难以回退的流程性接口调试的小技巧

前言

相信各位在开发过程中,在各类功能开发上线时,测试人员会全面细致的对功能进行测试,然后给你提出bug,而为了快速解决这个bug,最效率的方式就是【重现->调试->修复上线】,但是复杂需求的功能开发中,一条正常流程产生的,并且能够触发异常的数据是比较麻烦难造的,并且很多时候流程性的数据(比如工作流)用完就得重新来过。所以在修复bug过程中,需要修改的地方非常简单,可能只一两行代码即可解决,但是造数据来重现问题是个痛点,而这篇文章就是为了减轻这类痛点,分享给大家一个调试技巧。  网址是真实的域名,没打码是为了方便理解,各位大牛不要打我服务器,球球了
理解非幂等性

已经知晓的直接跳过这章哈。
1. 定义与概念

幂等操作指的是无论执行多少次,其对系统状态的影响都是相同的。反之,非幂等操作意味着多次执行可能会导致不同的结果或副作用。例如,在线银行转账就是典型的非幂等操作:同一笔转账如果重复发起两次,账户余额会相应地减少两次。
2. 实际案例

考虑一个在线购物网站上的下单流程。用户点击“立即购买”后,服务器端需要创建订单记录,并从库存中扣除商品数量。这个过程显然是非幂等的,因为重复提交相同的请求会导致多个订单被创建,库存也会被错误地扣减。
调试技巧步骤

1、web页面启用【阻止网络请求】

在浏览器中F12,网络请求中选中要Debug的接口的网请求,右键 --> 阻止请求URL/阻止请求域
1.png

2.png

其中,阻止请求URL,和阻止请求域是两个颗粒度的操作
【阻止请求URL】是具体的url路径。
【阻止请求域】是该URL对应域名那部分。
其中网络请求的url是
2、复制Curl

选中将对应请求的网络请求,右键——》 复制——》 复制为 cURL
3.png

复制为cURL(cmd) 或者 复制为cURL(bash) ,ApiPost都能识别
3、ApiPost导入Curl

打开Api Post , 或者PostMan 都行, 去新建或导入curl
4.png

5.png

导入成功,他会将整个请求,包括 head,body  这些全部复制进来,完全模拟了当时请求的情况。
但是!!!   此时不要去发送请求!!!!   因为接口是非幂等的,发送请求,那么就浪费这次机会了!!
4、启动本地Api程序,打好断点,修改请求路径

将之前接口的 前面域名那一段替换成本地API的路径。
6.png

5、将请求发到本地,开始Debug !!

7.png

2. 个人经验分享以及常见问题和解决方案

1、微服务中有一定的局限性
微服务中部署的各个服务都是分开在各个 pod或者容器中,并且还区分了环境,假设你调试的是正式环境的某个接口,那么在切换成正式环境时,如果其他服务有对ip有限制无法调通,则在调试过程中有调用此第三方服务的地图就无法继续调试了。
2、线上运行版本与本地运行版本不一致,可能导致调试重现不出异常
这个方式相当于截取了本应该发送给正式环境的服务器上,而直接发送到本机上,如果线上有问题的版本与本机版本不一致,而问题刚好出在这个版本差异上,就会错过了异常的捕获。 那么如何避免这种情况呢?这就是需要看自己git分支管理的怎样了,一般来说线上跑的是稳定的有版本号Tag的master分支,切换到线上的分支上再进行调试即可。
【操作视频】
https://www.bilibili.com/video/BV1p4XVY7EUJ/

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册