在RESTful接口中处理乐观锁定的推荐方法似乎是ETag从GET 返回一个并If-Match在PUT上提供一个,即:
GET /items/1 --> gives client an ETag for a single item
PUT /items/1 <-- client gives it back as If-Match for checking
Run Code Online (Sandbox Code Playgroud)
如何将此方案与多个项目一起使用,例如,如果我要批量从单个URI中获取多个项目:
GET /items --> How do I return multiple ETags for multiple items here?
Run Code Online (Sandbox Code Playgroud)
或者,如果ETags/If-Match不能应对这种情况,那么推荐的方法是什么?或者我应该自己动手?
Six*_*aez 20
tl; dr:可以将etags分配给包含"集合"的资源,但是在确定有效的etag时,由应用程序来管理该集合中项目的标识/更改.
REST架构风格中的资源并不意味着它是单个项目或集合.它只是表示工作流中给定点的应用程序状态.资源将包含描述性数据,并希望链接到工作流中该点的可能后续步骤.工作流程可以像获取订单状态一样简单,也可以像电子商务网站上的订购商品一样复杂,并且可以取消订单.
一个ETAG是用于确定特定状态(资源)是否达到最新与否的机构.将etag分配给返回数据集合的资源意味着您的应用程序正在识别该点处的集合项的状态,并且如果这些项中的任何内容发生更改,则先前的etag值将不再有效.由您的应用程序决定何时更改集合项以及如何识别各个项目.换句话说,etags适用于资源,但不适用于给定资源的各个组件.
| 归档时间: |
|
| 查看次数: |
5100 次 |
| 最近记录: |