幂等性在HTTP PUT上下文中的意义?

幂等性在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之

在(时间戳17:00-18:45)中,演讲者说HTTP
PUT
必须包含资源的所有属性,并且不能用于部分更新。这在HTTP中是必需的,因为否则它不是幂等的

他对幂等性的定义是(这听起来很合理):

幂等元是可以执行一次或多次的任何操作 时间和结果将处于相同的服务器状态

然而,他接着给出了一个例子,其中(意译):

请求A:我使用
PUT
只更新资源的name属性

请求B:我使用
PUT
仅更新描述

在A和B之间,另一个客户机可以指定名称,然后在请求B之后 资源具有另一个客户端的名称和我的描述。因为 请求A和B之后的服务器状态不同,这不是 幂等运算

我不确定这种解释:对我来说,幂等只能告诉你当你连续多次运行同一个操作时会发生什么。在上面的示例中,请求A和B是两个不同的操作,因此没有理由认为运行A和B应该有任何特殊的保证;特别是,没有理由认为它们应该一起构成一个原子操作

多次运行请求A会产生与运行一次相同的效果(对于B也是如此),因此我会认为它是幂等的(即使这是由于其他原因而错误地使用了
PUT

我的理解不对吗


(注意:这是一个关于幂等性含义的问题,而不是
PUT
的适当用法)。

你是对的;部分更新可以是幂等的

这并没有改变PUT不适用于部分更新的事实;如果您需要部分更新,您应该使用补丁