REST API - 单个资源的更新会更改多个其他资源

REST API - Update of single resource changes multiple others

我正在寻找解决以下问题的方法:

假设您修改了一个资源,随后导致其他资源的更新。

例如您向 /api/orders/1234 发出 PUT,根据定义,它会更改给定用户的所有其他订单的状态。可能有 UI 个客户端显示订单的 table,他们应该知道不仅 table 中的单个项目已更新,最终其他项目也会更新。

现在,有没有什么标准的方法可以告知客户这种情况?

到目前为止,我只能想到发回 205 Reset Content HTTP 状态代码来通知客户端他应该刷新状态,因为不仅仅是一件事情被改变了。

有多种解决方案。

  1. 您可以将特定资源定义为不可缓存,这样客户端根本不会缓存它们。 (no-store)
  2. 您可以尝试将 max-age 设为 0,这样客户端将不得不始终重新验证这些资源。在这种情况下,您可能必须实施 ETags 和条件 GETs,但它在服务器上比选项 1 更容易。
  3. WebSockets.
  4. 这样的push方法

如果您真的想要 "notify" 潜在的多个客户端进行更改,那么听起来您需要选项 3。

但是,正确配置的缓存通常就足够了。例如,您可以将尚未执行的订单标记为未缓存(max-age=0),但是一旦执行,您可以将其标记为无限期缓存,因为它不能再更改。