1
yuankui 2016-12-08 09:18:32 +08:00
我们说幂等的时候,都有一个隐含前提:
一个消息(或者请求)有一个标识字段类唯一地标识这个请求。 拿点赞的例子,这个唯一地标识就可以是: 帖子 ID + 点赞人 ID 拿下单的例子,可能就是订单号 如果没有这个标识,就要想法创造这个标识 没有标识你来说幂等?天方夜谭啊 |
2
crossoverJie 2016-12-08 09:19:15 +08:00
正好我现在正做一个幂等的业务:一个商户接入我们的系统首先要他传一个订单过来,之后我们这边会判断这个订单是否存在,如果不存在就创建该订单,因为这个业务是创建订单之后会有一个 step 状态,第一次创建状态就是 0 也就是新建。如果存在的话就返回该订单所在的 step 状态。之后这个 step 状态会在运营的接入下进行更新,每次商户如果需要查询订单状态的话也会反复请求我这个接口然后返回信息给他,不知道明白了没有,这是我所理解的。
|
3
enenaaa 2016-12-08 09:21:50 +08:00
比如 get 一个静态文件, 比如你点感谢, 就算你手动发 n 次感谢的请求, 也只算一次。
|
4
kaneg 2016-12-08 09:43:39 +08:00 via iPhone
个人理解幂等是对于只读的资源的请求,无论多少次请求都不会对该资源造成影响,比如 get 。而对于带写操作的请求,比如 post , put , delete 都不是幂等的
|
5
lhbc 2016-12-08 09:51:47 +08:00 via iPhone
从购物车创建订单就可以保证幂等了。
购物车数据提交到服务器保存,创建订单后删除购物车里的相应商品,重复提交就不会产生多个订单。 post, put, delete 都可以幂等,看你程序是否实现 比如 v2 对某个回复或帖子感谢 |
7
liuxu 2016-12-08 10:35:10 +08:00
|
8
wubotao 2016-12-08 10:45:49 +08:00
我看成了「关于杨幂的问题」。。。 😄 😄 😄
|
9
twtiyb 2016-12-08 16:56:57 +08:00
幂等。。执行一次,执行多次。效果一样。
|
10
ihuotui 2016-12-08 21:35:51 +08:00
还有一种情况是,幂等是有时效性,各大网站的缓存,就是一定时间内幂等。
|
11
SoloCompany 2016-12-09 03:04:24 +08:00
幂等不仅仅是描述事务,还包括行为
比如,按 ID 删除是典型的幂等操作 如果 API 设计为,删除成功返回 true ,记录不存在返回 false 那么这个 API 接口就不是幂等的 幂等的接口要求不管多少次调用,返回状态都无法区分 所以,防止多次提交和幂等并不完全是一回事,但幂等操作肯定不存在重复提交问题 |