【问题标题】:REST: How can I delete a resource and optionally delete another one?REST:如何删除一个资源并选择删除另一个资源?
【发布时间】:2020-11-24 08:12:54
【问题描述】:

我需要删除一些资源,但我想让客户决定是同时删除相关资源还是保留它。

例如,假设我有一个拥有多个客户的项目。当我想删除项目时,我想在请求中指定是否删除其关联客户。

所以我问我是否可以这样做:

DELETE http://..../.../someproject?deletecustomers=true

【问题讨论】:

    标签: rest http


    【解决方案1】:

    REST 架构对整体设计施加的少数约束之一是缓存。 HTTP 中的缓存适用于作为缓存键的整个 URI,其中值对应于缓存的表示响应。对该 URI 执行的任何不安全操作,例如 POST、PUT、DELETE 等,都将导致该存储的响应被驱逐(如果超过了某个时间阈值也是如此)。在向 URI 附加更多参数时,实际上作用于完整 URI 的缓存可能找不到因此要驱逐的资源表示。在后台删除关联资源的另一个问题是,它会绕过任何缓存,因此他们不会首先注意到该删除,并且可能仍然为客户端提供过时的响应。因此,特别是如果客户端也可以决定是否删除关联资源,最好发出第二个 DELETE 请求。

    请注意,DELETE 被定义为仅删除该资源的 URI 映射,因此对同一 URI 的连续请求不会返回该资源的数据,但这并不一定意味着该资源的数据是从系统中删除。但是,通常,这些数据也会作为DELETE 操作的一部分被删除。这是一个完美的例子,说明 REST 架构中的某些东西是依赖于实现的,它们对客户端是透明的,这意味着它们并不真正了解远程系统的真实行为。

    【讨论】:

      猜你喜欢
      • 2022-07-28
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 2020-12-23
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多