zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java接口防重提交如何处理

JAVA接口 如何 处理 提交
2023-09-27 14:27:34 时间

1.什么是接口防重?

在一定的时间内多次请求同一接口,同一参数。由于请求是健康请求,会执行正常的业务逻辑,从而产生大量的废数据。

2.问题的产生及引发的问题

举一个最简单的例子:日常开发中crud在业务系统中普遍存在,在服务端没有做任何处理,客户端没有做节流、防抖等限流操作时,同一秒一个用户点了两次新增按钮,导致数据库中存在同样两条数据,其结果可想而知,同理修改、删除同样的道理;查询本身具有幂等性,但是在同一秒钟同样的操作,查询多次和一次,有区别吗?区别大了去了,不谈用户体验如何,光是网络开销、流量占用、带给服务器的压力等等,生产中一点小的问题,如何不及时处理,可能会引发灾难性bug。

3.处理方法

  • 第一种:前台在请求接口的时候,传递一个唯一值,然后在对应接口判断该唯一值,在一定的时间内是否被消费过

  • 第二种:采用Spring AOP理念,实现请求的切割,在请求执行到某个方法或某层时候,开始拦截进行,获取该请求的参数,用户信息,请求地址,存入redis中并放置过期时间,进行防重(推荐使用)

4.谈谈以下两种处理方法的利弊

  • 第一种:局限性太高,前台必须传递一个唯一值,就算请求到达指定后台服务,写一个拦截器,需要配置太多不需要拦截的方法&#x