接口幂等性定义以及场景
理解
接口幂等性场景举例:
比如提交一个表单到后台插入一个数据,因为浏览器卡顿我就一直点提交按钮,如果要确保接口的幂等性,就需确保多次点击提交实际只有一次是有作用的,数据最终也只插入了一条。说白了就是多次操作和一次操作的效果是一样的。
增删改查中,“查”是天然幂等的,因为“查”没有改变数据库,只是查看,所以不管你用同一个查询接口查询多少次,结果都是一样的(这里的一样指的是没有其他接口去修改的前提)
接口幂等性的实现(举例)
表单重复提交,token+缓存实现
- 后端提供一个产生token的接口(设为A接口),针对有幂等性要求的接口(假设叫B),需要每次请求前先访问A获取token,
- 把产生的token,缓存下来,单机服务直接保存到jvm就行,可以自带的容器collection存,分布式服务直接存到redis
- 在请求的时候携带token,如果是第一次处理,需要把缓存的token删除掉,如果有重复的请求过来时去缓存查找token就查不到了,查不到就说明不是第一次处理请求。