gpt4 book ai didi

rest - ETag 和集合

转载 作者:可可西里 更新时间:2023-11-01 15:14:21 28 4
gpt4 key购买 nike

许多 REST API 提供了搜索资源的能力。

例如,可以使用以下 HTTP 请求获取类型 A 的资源:

GET /A?prop1={value1}&prop2={value2}

我正在使用乐观锁定,因此想为每个返回的 A 类型资源返回一个版本。直到现在,我在使用其 ID 仅获取一个资源时使用 ETag header 。

是否有一种 HTTP 方式可以在同一响应中返回多个资源的版本?如果不是,我应该在正文中包含版本吗?

谢谢,迈克尔


编辑:我在网上发现,ETag 通常是通过计算部分回复的哈希值生成的。这种方法非常适合我的情况,因为将计算返回集合的哈希值。但是,如果客户端决定更新集合中的某个元素,他应该将哪个 ETag 放入 If-Match header 中?我认为包含单个元素的 ETag 是唯一的解决方案...

最佳答案

我会采用以下选项之一:

  1. 默认情况下使 ETag 变弱,它们是根据资源的当前状态生成的,而不是根据 HTTP 响应负载中的资源表示生成的。这样,除了响应 header 中整个集合的 ETag 之外,我还可以为集合查询响应正文中的每个资源返回一个有效的 ETag。

  2. 在这种情况下忘记 If-Match 和 ETag,并使用 If-Unmodified-SinceLast-Modified 作为每个资源的属性。通过这样做,我可以保留强大的 ETag,但客户端仍然可以根据收集响应对一项进行更新,而无需对资源本身发出另一个请求。

  3. 允许通过 PATCH 对集合资源本身进行更新,使用 If-Match header 和整个集合的 ETag。如果有很多并发更改,这可能不会很好地工作,但这是一种合理的方法。

关于rest - ETag 和集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28518623/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com