专栏首页强仔仔【坑】时效性数据传参的后果

【坑】时效性数据传参的后果

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhiqiang0316/article/details/83242765

前几天在测试的时候发现一个bug,刚开始还很莫名奇妙,反复找原因都找不到,后来分析请求和返回报文的时候,才发现这个问题产生原因。为了让大家可以少走弯路、少掉坑,这边和大家一起分享一下。

应用场景:

app可以用手机号来兑换别的系统金币,运营平台拥有修改绑定手机号的功能。正确的流程应该是运营平台修改用户对应的绑定手机号之后,兑换产生的分值也会发放到我们已经修改后的手机号码中。

bug场景:

在测试的过程中就发现一个问题,不管我们怎么修改绑定手机号,兑换的一直都是第一个绑定的手机号码。只有当app刷新的时候,重新进入兑换页面才会用修改后的绑定手机号,进行分值兑换。

问题分析:

刚开始以为是对方系统出现问题了,后面发现分值可以兑换成功,只是号码不是我们最新绑定的号码。然后继续分析,也有可能是运营平台修改没有成功,但是查看数据库,发现确实是已经成功了。最后根据app那边反馈过来的情况,最终定位为有可能app是直接拿缓存的绑定手机号,来进行分值兑换操作,查询一下app请求报文,发现还真实这个问题。

方案制定:

这种情况其实很好解决,app那边不需要传绑定的手机号来兑换,只要传一个用户id,然后服务端通过这个用户id,去查询对应的绑定手机号,然后通过查询到的绑定手机号去兑换。这样就可以保证每次用户兑换,都是最新修改那个绑定手机号了。

问题反思:

问题是已经解决了,但是我们不能仅仅解决问题就可以了,一定要思维扩展、举一反三,看看系统中有没有可能存在类似的情况,火速找到马上解决,然后分析产生这样问题的原因。之所以会产生这样的bug,最根本的原因就是:没有拿不变的参数来请求服务端接口,这句话的意思是:app接口请求的时候千万不要拿一个可能会被修改的字段作为请求参数,一个要拿一个不可改变的参数作为请求参数,通俗的来说就是要拿不具备时效性的数据来请求。

总结:

看了上面的例子,以后大家要是遇到类似的应用场景,一定知道怎么处理了吧。刚刚说到举一反三,其实电商系统中有很多这样的例子,比如提交订单,我们在订单预览的时候,可以看到这一单所对应的积分值,但是千万不要直接拿这个预览的积分值作为实际的积分值,一定是传一个订单id(不具备时效性),然后通过后台自己去计算积分值。好了今天的内容就介绍到这边了,谢谢大家的阅读~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【坑】接口等幂性实施策略

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    林老师带你学编程
  • ArrayList之removeAll底层原理实现详解

    今天给大家介绍下ArrayList之removeAll的用法,并深入讲解一下它的底层实现原理。

    林老师带你学编程
  • SpringBoot中搭建Redis缓存功能

    今天给大家介绍一下SpringBoot中如何搭建Redis缓存功能 因为我的Redis是搭建在windows系统上面的,所以首先给大家介绍一下如何在window...

    林老师带你学编程
  • EasyPlayer网页全终端播放器之Android版的分屏策略及如何设置2分屏

    要实现这几种显示模式。其实只要对播放控件的布局进行些许调整即可。**那EasyPlayer-Android的分屏策略和二分屏设置是如何实现呢?

    EasyNVR
  • PyTorch更新了:支持Windows,新增零维张量

    PyTorch今天发布了v0.4.0版本,网友们反响非常热烈,甚至有人说:感觉就像提前过圣诞~

    量子位
  • 低代码RPA机器人开发平台或将引发新一轮IT服务升级

    据《2019中国企业数字化转型及数据应用调研报告》显示,超过80%的受调查企业其数据以非结构化为主,超过90%的企业内部存在数据孤岛,约80%的企业不认可自身数...

    蕉黄
  • 复现经典:《统计学习方法》第22章 无监督学习方法总结

    第2篇详细介绍了八种常用的统计机器学习方法,即聚类方法(包括层次聚类与k均值聚类)、奇异值分解(SVD)、主成分分析(PCA)、无监督学习方法总结 22.1无监...

    黄博的机器学习圈子
  • vmware api开发之克隆虚拟机

    用户1057912
  • LeetCode 1025. 除数博弈(动态规划)

    只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。 假设两个玩家都以最佳状态参与游戏。

    Michael阿明
  • 云视互动-----如何解决在线教育行业痛点

    随着移动互联网创业的火热,面向创业者的产品和服务越来越多,它们涉及到APP生命周期的方方面面,合理使用这些服务,可以大大加快研发速度,节省成本...同时传统行业...

    大葡萄

扫码关注云+社区

领取腾讯云代金券