如何实现接口的幂等性设计策略?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2940个文字,预计阅读时间需要12分钟。
前言:所谓伪原创等:多次调用方法或接口不会改变业务状态,可保证重复调用的结果与单次调用一致。。我们在开发中主要操作也是CURD,其中读取、操作和删除操作是自然而然等。
前言所谓幂等: 多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。
我们在开发中主要操作也就是CURD,其中读取操作和删除操作是天然幂等的,我们所关心的就是创建操作、更新操作。
创建操作一定是非幂等的因为要涉及到新数据的产生,而更新操作有可能幂等有可能非幂等,这个要看具体业务场景。
一、幂等性的使用场景 1、前端重复提交就好比有个新增商品的功能,有个保存按钮,如果前端连续多次点击保存,后端就会收到多次请求接口,如果没做好幂等就会重复创建了多条记录,
就会出现脏数据。
这个也就是我们所说的如何防止前端重复提交的问题。
2、接口超时重试当我们调取第三方接口的时候,有可能会因为网络等原因导致调用失败,所以我们会对接口调用添加失败重试的机制,Spring可以通过@Retryable注解实现重试机制。
既然重试就可能出现重复调用接口。这时再次调用时如果没有做好幂等,就可能出现脏数据。
3、消息重复消费这个是无法避免的,因为我们说MQ在生产端和消费端都有重试机制,也就是同一消息很可能会被重复消费。
本文共计2940个文字,预计阅读时间需要12分钟。
前言:所谓伪原创等:多次调用方法或接口不会改变业务状态,可保证重复调用的结果与单次调用一致。。我们在开发中主要操作也是CURD,其中读取、操作和删除操作是自然而然等。
前言所谓幂等: 多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。
我们在开发中主要操作也就是CURD,其中读取操作和删除操作是天然幂等的,我们所关心的就是创建操作、更新操作。
创建操作一定是非幂等的因为要涉及到新数据的产生,而更新操作有可能幂等有可能非幂等,这个要看具体业务场景。
一、幂等性的使用场景 1、前端重复提交就好比有个新增商品的功能,有个保存按钮,如果前端连续多次点击保存,后端就会收到多次请求接口,如果没做好幂等就会重复创建了多条记录,
就会出现脏数据。
这个也就是我们所说的如何防止前端重复提交的问题。
2、接口超时重试当我们调取第三方接口的时候,有可能会因为网络等原因导致调用失败,所以我们会对接口调用添加失败重试的机制,Spring可以通过@Retryable注解实现重试机制。
既然重试就可能出现重复调用接口。这时再次调用时如果没有做好幂等,就可能出现脏数据。
3、消息重复消费这个是无法避免的,因为我们说MQ在生产端和消费端都有重试机制,也就是同一消息很可能会被重复消费。

