我正在创建一个基本的REST API - 我并不真正关心它的目的,这只是一个例子 - 我有一个包含以下内容的购物车:
客户可以通过 POST 与购物车互动,在其上附加商品和数量。附加项创建子资源,客户可以通过更新( PUT )或删除( DELETE )来处理项目。
就像那样:https://blog.apigee.com/detail/does_your_api_need_to_be_truly_restful
服务器负责更新购物车的状态。我希望它不会违反REST原则,但他会更新:
客户通过附加项目来修改购物车资源。 当超时到期时,服务器“单独”修改它。
当客户端在超时过期后附加项目时发生并发。
要解决它,乐观锁似乎是合适的。然后使用ETag标头,客户端修改购物车资源,并在其他人修改它时知道。
在这种情况下,并发性在客户端和服务器之间。
当服务器自己修改资源时,更新ETag标头(Last-Modified)是否相关?
谢谢!
答案 0 :(得分:3)
是。这是对ETag的适当使用。
当购物车中有新商品或购物车状态发生变化时,ETag响应标题应该会改变,例如到期了。
客户端可以记住ETag并在用户更改购物车时在请求的if-match
标头中发送它(在PUT / POST / DELETE调用上)。如果ETag不同,服务器应返回412代码。