在 POST 和 DELETE 之后管理服务器端和客户端状态

Managing Server side and Client side state after POST and DELETE

所以这是我在决定时面临的问题,想知道什么是最佳实践以及选择哪一个。

假设我们有一个项目列表,我们使用 GET 获取所有列表,我们使用 POST 进行编辑,使用 DELETE 删除列表。在成功完成这些请求中的任何一个后,确保客户端状态与服务器状态同步的最佳做法是什么。

  1. 获取所有列表
  2. 让服务器return编辑或删除操作后的所有列表。
  3. 或者客户端应该信任 200 OK 并使用修改列表更新客户端状态

这是非常基于意见的,因为这里有很多变数。理想情况下,我总是说,删除客户端状态,并始终在更新后重新获取数据。这当然完全取决于重新检索该状态的cost/complexity。如果是 cheap/small,继续并重新获取列表……这比尝试保持状态同步要简单得多。如果您确实要更新本地缓存,请确保它是 CACHE 模式,而不是 REPOSITORY 模式。这意味着您不必一定信任重要操作的缓存,并且您应该在对实体进行操作之前执行诸如验证实体之类的操作。

我不会 return 从 POST/DELETE 更新列表,更新实体没问题,但整个列表应该是后续 GET。任何其他事情,您不仅破坏了 REST,而且还在您的服务中定义了客户端应用程序的行为(您不想这样做)。