幂等性在HTTP PUT上下文中的意义?
在(时间戳17:00-18:45)中,演讲者说HTTP幂等性在HTTP PUT上下文中的意义?,http,rest,put,httpverbs,idempotent,Http,Rest,Put,Httpverbs,Idempotent,在(时间戳17:00-18:45)中,演讲者说HTTPPUT必须包含资源的所有属性,并且不能用于部分更新。这在HTTP中是必需的,因为否则它不是幂等的 他对幂等性的定义是(这听起来很合理): 幂等元是可以执行一次或多次的任何操作 时间和结果将处于相同的服务器状态 然而,他接着给出了一个例子,其中(意译): 请求A:我使用PUT只更新资源的name属性 请求B:我使用PUT仅更新描述 在A和B之间,另一个客户机可以指定名称,然后在请求B之后 资源具有另一个客户端的名称和我的描述。因为 请求A和B之
PUT
必须包含资源的所有属性,并且不能用于部分更新。这在HTTP中是必需的,因为否则它不是幂等的
他对幂等性的定义是(这听起来很合理):
幂等元是可以执行一次或多次的任何操作
时间和结果将处于相同的服务器状态
然而,他接着给出了一个例子,其中(意译):
请求A:我使用PUT
只更新资源的name属性
请求B:我使用PUT
仅更新描述
在A和B之间,另一个客户机可以指定名称,然后在请求B之后
资源具有另一个客户端的名称和我的描述。因为
请求A和B之后的服务器状态不同,这不是
幂等运算
我不确定这种解释:对我来说,幂等只能告诉你当你连续多次运行同一个操作时会发生什么。在上面的示例中,请求A和B是两个不同的操作,因此没有理由认为运行A和B应该有任何特殊的保证;特别是,没有理由认为它们应该一起构成一个原子操作
多次运行请求A会产生与运行一次相同的效果(对于B也是如此),因此我会认为它是幂等的(即使这是由于其他原因而错误地使用了PUT
)
我的理解不对吗
(注意:这是一个关于幂等性含义的问题,而不是
PUT
的适当用法)。你是对的;部分更新可以是幂等的
这并没有改变PUT不适用于部分更新的事实;如果您需要部分更新,您应该使用补丁