接口幂等---toekn令牌机制解决

本文介绍了如何通过令牌机制(如UUID)确保接口幂等性,防止购物车下单、支付等操作的重复。后台生成UUID并存储在Redis中,前端提交时附带该UUID,后台根据是否存在该UUID进行判断,避免重复处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

一个接口,被请求一次或被请求多次,效果是一样的,那这个接口就是幂等的,像查询、删除这些就是幂等的。项目中,防止重复下单,防止重复支付,还有防止消息重复消费,这些都是借口幂等的,可以使用令牌机制解决。

模拟场景---购物车下单

第一步:

在页面初始化时(也就是刚进入页面),向后台请求获取一个uuid的值。

而后台在生产uuid后,同时也要把生产的uuid存入redis中(也可以放入数据库,存入redis缓存较好)

第二步:

前台点击下单按钮时,将表单里的属性加上个uuid属性,并将页面初始化时获取的uuid赋值给表单里的uuid

表单参数:

请求后台方法前先将其orderForm里的uuid赋值

第三步:

后台接到表单对象,做出处理

后台接到表单对象后判断里面的uuid是否存在于redis里,存在先是删除uuid这个键key,然后再做下单的业务处理等,最后返回响应;如果不存在,则是重复了。

举例:

如果用户一次性连续点击多次按钮,也是发起多次请求,每次请求里带的参数uuid都是同一个(页面初始化获得的uuid),那我第一次请求在处理时已经把redis存的键给删了,那么后面的请求就进不去if()判断里面,执行不了下单的业务。

总结:

令牌机制也就是后台生成一个UUID存储到redis里也可以存入数据库,前台拿到uuid再赋值给表单里的uuid,在做业务时拿出表单对象里的UUID判断,第一次下单成功直接接删除redis缓存里的uuid,不给连续第二次第三次机会走下单业务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值