1.1 幂等性的概念
Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.
- 多次请求一个资源时,应该有相同的结果(网络超时等问题除外)。 也就是说,一次请求被多次重复执行对资源自身的影响与第一次执行的影响相同。
- 例如:用户查询结果多次扣款。 流水记录变成两个就是没有保证接口的幂等性。
1.2 防重设计和幂等设计
- 防重设计和幂等设计在很多情况下是可以通用的,解决方案也比较类似,区别在于:
- 防重设计:避免产生重复数据,对返回结果没有限制。
- 幂等设计:避免产生重复数据,要求每次请求都返回同样的结果。
1.3 常见场景
- FORM 表单,按钮重复点击,产生 ID 不一样的两条重复数据。
- 浏览器页面返回