关于幂等的理解

相同的参数,一次或多次请求,服务器的资源是一样的。不用担心重复的操作会对系统造成影响。

RESTFUL风格

  • HTTP GET方法(幂等)
    用于获取资源,不管调用多少次接口,结果都不会改变,所以是幂等的。

  • HTTP POST方法(非幂等)
    用于创建资源,每次调用都会创建一个新的资源

  • HTTP DELETE方法(幂等)
    用于删除资源,会将资源删除。调用一次和多次对资源产生影响是相同的,所以也满足幂等性

  • HTTP PUT方法(幂等)
    用于更新资源,没有的话则执行创建操作
    两次请求携带的数据是一样的,所以不论请求多少次,最终的结果都是后台存在这么一个资源(创建或更新)

幂等概念

比如说支付接口,部署在多台服务器中
用户发起了多次付款的请求,然后这两个请求分布在不同的服务器上
所谓幂等性,就是说一个接口,多次发起同一个请求,你这个接口得保证结果是准确的,比如不能多扣款,不能多插入一条数据,不能将统计值多加了1。。

对于每个请求必须有一个唯一的标识,比如:订单支付请求,肯定得包含订单id,一个订单id最多支付一次。
每次处理完请求之后,必须有一个记录标识这个请求处理过了,比如说常见的方案是在mysql中记录个状态啥的
每次接收请求需要进行判断之前是否处理过的逻辑处理,比如说,如果有一个订单已经支付了,就已经有了一条支付流水,那么如果重复发送这个请求,则此时先插入支付流水,orderId已经存在了,唯一键约束生效,报错插入不进去的。然后你就不用再扣款了。

你可能感兴趣的:(关于幂等的理解)