zoukankan      html  css  js  c++  java
  • 幂等校验

    一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。

     

    其实幂等就是一个操作或者接口,不管你调多少次,每次执行的结果都跟第一次一样。

     

    比如数学上,1这个数字就是幂等的,无论你用什么数字跟1乘,乘多少次,最后的结果都跟第一次是一样的。

    试想这样的一种场景:在电商平台上支付后,因为网络原因导致系统提示你支付失败,于是你又重新付款了一次,等完成后检查网银发现被系统扣了两次款,这是一种什么样的体验?

    造成上述问题的原因可能有很多,比如第一次付款时实际支付成功,但是信息返回时网络中断导致系统误判;又比如第一次付款的确失败了,但第二次付款时发生意外,导致支付请求被重复发送等等。在一次支付的过程中,每个环节都有可能会发生问题,我们要如何规避这类问题引发的分险?

    幂等性是解决这类问题的方案之一,所以在电商,银行,互联网金融等对数据准确性要求很高的领域中,这一特性具有十分重要的地位。

    所以对于一些重要的接口或者操作,我们是要求后台保证其幂等性的。因为客户端可能有重试机制,另外中间人攻击可能会进行请求的重放,这些都有可能导致接口被多次调用,像上面的扣款操作,如果接口没有实现幂等,那么后果是相当不堪设想的。

    如何测试?

    • 首先在需求分析的时候我们要有能力识别出需要实现幂等的接口,提前要求开发同学去实现;
    • 测试过程中由于幂等的特性是多次调用的结果相同,那么可以用自动化的方式去反复调用,这样会比较高效;
    • 异常情况需要考虑到,比如除了第一次调用之外的调用是否有性能问题,稍微修改一些无关紧要的参数是否会破坏幂等之类的;
  • 相关阅读:
    Java实现 LeetCode 56 合并区间
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
  • 原文地址:https://www.cnblogs.com/by170628/p/14543568.html
Copyright © 2011-2022 走看看