我的API RESTful结构是:
{
"users":[
{
"id": 100,
"idempotent_property": 10,
"not_idempotent_property": 10
}
]
}如果只想更改"idempotent_property“的值,则需要:修补程序/用户/100>主体:{"idempotent_property":17}
但是,如果我只想更改"not_idempotent_property“的值,我必须如何做?补丁必须只用于幂等的objet/属性,不是吗?
我认为: POST /users/100/not_幂等属性> body:{"value":15}
发布于 2022-09-21 17:06:08
找到一些文档,这个补丁实际上是做什么的。例如,如果通过10,它可能会在数据库中的某个地方添加10,显然不是幂等的。
解决方案是为该属性调用修补程序一次。或者你读了这个值,然后修补并检查新的值。
问题是,当修补程序返回失败时,您不知道操作是否已经执行。对于幂等属性,您可以再次使用pATCH。
顺便说一下,按定义,补丁不是幂等的。
发布于 2022-09-22 12:16:43
补丁不一定是幂等的,尽管它可以。将此与PUT进行对比;PUT总是幂等的。“幂等”一词意味着任何数量的重复、相同的请求都将使资源处于同一状态。例如,如果自动递增计数器字段是资源的一个组成部分,那么PUT就会自然地覆盖它(因为它覆盖了所有内容),但是对于补丁来说并不一定如此。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH
不太清楚你所说的“幂等宾语/属性”是什么意思。Afaik。操作可以是幂等的,而不是属性。如果您的意思是属性的值在发送响应和根据响应发送新请求之间发生变化,则可以对资源状态进行版本化,并发送例如不修改的If自或如果匹配标头与修补程序请求匹配。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Unmodified-Since
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Match
https://stackoverflow.com/questions/73804382
复制相似问题