架构设计 | 接口幂等性原则,防重复提交Token管理
本文源码: GitHub·点这里 || GitEE·点这里 一、幂等性概念 1、幂等简介 编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。就是说,一次和多次请求某一个资源会产生同样的作用影响。 2、HTTP请求 遵循Http协议的请求,越来越强调Rest请求风格,可以更好的规范和理解接口的设计。 GET:用于获取资源,不应有副作用,所以是幂等的; POST:用于创建资源,重复提交POST请求可能产生两个不同的资源,有副作用不满足幂等性; PUT:用于更新操作,重复提交PUT请求只会对其URL中指定的资源有副作用,满足幂等性; DELETE:用于删除资源,有副作用,但它应该满足幂等性; HEAD:和GET本质是一样的,但HEAD不含有呈现数据,仅是HTTP头信息,没有副作用,满足幂等性; OPTIONS:用于获取当前URL所支持的请求方法,满足幂等性; 二、场景业务分析 1、订单支付 实际开发中,经常会面对订单支付问题,基本流程如下: 客户端发起订单支付请求 ; 支付前系统本地相关业务处理 ; 请求第三方支付服务执行扣款; 第三方支付返回处理结果; 本地服务基于支付结果响应客户端; 该业务流程中要处理相当复杂的问题,比如事务,分布式事务,接口延迟超时,客户端重复提交等等,这里只基于幂等接口角度来看该流程,其他问题后续再聊。 2、幂等接口