ETag使用和资源修改

ETag usage and resources modification

上下文

我有2个资源-这是一个例子,不要注意它的相关性-link合在一起:

问题

应用程序可以在 /customers/{id}/customers/{id}/age 资源上使用 PUT 执行更新。

由于年龄属性与两种资源相关,因此可以通过两种不同的方式执行年龄更新,从而导致冲突。 所以 ETag 似乎是解决我问题的灵丹妙药 ;-)!

问题

此示例的两个更一般的问题:

一个更普遍的问题:关于使用 ETag header 是否有一些好的做法,或者我可以做任何我想做的事情?

这种情况经常出现。将资源视为层次结构(即树)通常很自然,其中 'parent' 项依赖于它们的子项,而子项不一定依赖于它们的父项。当叶项更新时,即 ETag 发生变化时,该效果会一直波及到根。

一个例子是 CardDAV,其中地址簿有一个 "ctag",它依赖于集合中所有 vCard 条目的 ETag。在这种情况下,ctag 没有明确表示为 ETag,但它很可能是。