赞
踩
针对客户端连续点击或者调用方的超时重试等情况,例如提交订单,此种操作就可以用 Token
的机制实现防止重复提交。
简单的说就是调用方在调用接口的时候先向后端请求一个全局 ID(Token)
,请求的时候携带这个全局 ID
一起请求(Token
最好将其放到 Headers
中),后端需要对这个 Token
作为 Key
,用户信息作为 Value
到 Redis
中进行键值内容校验,如果 Key
存在且 Value
匹配就执行删除命令,然后正常执行后面的业务逻辑。如果不存在对应的 Key
或 Value
不匹配就返回重复执行的错误信息,这样来保证幂等操作。
Token
串Redis
进行数据效验ID
或者 UUID
串。Headers
中,执行业务请求带上该 Headers
。Headers
中拿到 Token,然后根据 Token 到 Redis 中查找该 key
是否存在。key
进行判断,如果存在就将该 key
删除,然后正常执行业务逻辑。如果不存在就抛异常,返回重复提交的错误信息。“ 注意,在并发情况下,执行 Redis 查找数据与删除需要保证原子性,否则很可能在并发下无法保证幂等性。其实现方法可以使用分布式锁或者使用 Lua
表达式来注销查询与删除操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。