在 POST 和 DELETE 之后管理服务器端和客户端状态
Managing Server side and Client side state after POST and DELETE
所以这是我在决定时面临的问题,想知道什么是最佳实践以及选择哪一个。
假设我们有一个项目列表,我们使用 GET 获取所有列表,我们使用 POST 进行编辑,使用 DELETE 删除列表。在成功完成这些请求中的任何一个后,确保客户端状态与服务器状态同步的最佳做法是什么。
- 获取所有列表
- 让服务器return编辑或删除操作后的所有列表。
- 或者客户端应该信任 200 OK 并使用修改列表更新客户端状态
这是非常基于意见的,因为这里有很多变数。理想情况下,我总是说,删除客户端状态,并始终在更新后重新获取数据。这当然完全取决于重新检索该状态的cost/complexity。如果是 cheap/small,继续并重新获取列表……这比尝试保持状态同步要简单得多。如果您确实要更新本地缓存,请确保它是 CACHE 模式,而不是 REPOSITORY 模式。这意味着您不必一定信任重要操作的缓存,并且您应该在对实体进行操作之前执行诸如验证实体之类的操作。
我不会 return 从 POST/DELETE 更新列表,更新实体没问题,但整个列表应该是后续 GET。任何其他事情,您不仅破坏了 REST,而且还在您的服务中定义了客户端应用程序的行为(您不想这样做)。
所以这是我在决定时面临的问题,想知道什么是最佳实践以及选择哪一个。
假设我们有一个项目列表,我们使用 GET 获取所有列表,我们使用 POST 进行编辑,使用 DELETE 删除列表。在成功完成这些请求中的任何一个后,确保客户端状态与服务器状态同步的最佳做法是什么。
- 获取所有列表
- 让服务器return编辑或删除操作后的所有列表。
- 或者客户端应该信任 200 OK 并使用修改列表更新客户端状态
这是非常基于意见的,因为这里有很多变数。理想情况下,我总是说,删除客户端状态,并始终在更新后重新获取数据。这当然完全取决于重新检索该状态的cost/complexity。如果是 cheap/small,继续并重新获取列表……这比尝试保持状态同步要简单得多。如果您确实要更新本地缓存,请确保它是 CACHE 模式,而不是 REPOSITORY 模式。这意味着您不必一定信任重要操作的缓存,并且您应该在对实体进行操作之前执行诸如验证实体之类的操作。
我不会 return 从 POST/DELETE 更新列表,更新实体没问题,但整个列表应该是后续 GET。任何其他事情,您不仅破坏了 REST,而且还在您的服务中定义了客户端应用程序的行为(您不想这样做)。