小编Ail*_*ens的帖子

并发环境中的幂等PUT

上下文

我有一个REST API,其中多个客户端(应用程序)可以使用PUT更新资源的状态.例如,此资源是您可以转动的灯ON或OFF.

当系统检测到发生电力故障时,该资源也会自动更新,导致灯处于BROKEN state. I want to made the distinction between BROKEN状态.我想区分OFF和BROKEN,一盏灯ON不能转PUT!

问题

我用PUT http://address:port/my_lamp { "state": "ON"} 方法来做这件事,比如说PUT

但我不确定我是否尊重ON方法的幂等属性.事实上,我有3个案例:

  • 灯是ON.上面的代码导致了ON状态.
  • 灯是ON.上面的代码导致了BROKEN状态....很酷!此时,幂等性仍然有保证:-)!
  • 灯是503 Service Unavailable.上面的代码会导致错误,例如PUT

题

我不确定正确理解幂等性的概念.相信我,我读了很多关于它的事情,但仍然有点困惑.

在我的理解中,多个BROKEN总是导致资源的相同状态:在我的情况下不能保证由于PUT

但我也可以用另一种方式来理解它:多重ON总是导致相同的副作用:保证,我的请求要么产生转动BROKEN,要么没有(对于这种ON情况,它已经存在).

编辑:

我的意思是:唯一的副作用是转动ON灯泡,这是保证的(它要么开启,要么在这里什么都不做)

请参阅此处:REST DELETE真的是幂等的吗?

哪一个是正确的?根据理解,我的REST API确保了幂等性能......

EDIT2:

从W3C …

api rest http idempotent

6
推荐指数
1
解决办法
1172
查看次数

标签 统计

api ×1

http ×1

idempotent ×1

rest ×1