【问题标题】:REST - Get collection with HTTP cache after deleteREST - 删除后使用 HTTP 缓存获取集合
【发布时间】:2019-05-26 09:25:08
【问题描述】:

我正在构建一个具有以下端点的 REST API:

GET /api/v1/categories - Get all categories
DELETE /api/v1/categories/$id - Delete a specific category

移动应用程序应在第一次获取所有类别,但稍后将仅获取最后修改的类别(使用 Last-Modified HTTP 标头)。

当第二个应用删除一个类别时,服务器会将其从数据库中删除。删除后,如果其他应用请求最后修改的类别,则服务器不会返回有关已删除类别的任何信息,并且这些应用不会将其从本地数据库中删除。

这个问题的最佳解决方案是什么?

我正在考虑使用软删除(指示类别已删除的标志),当应用程序获取最后修改的类别时,服务器会返回自 HTTP 标头中传递的日期以来所有修改的类别,包括已删除的类别。但是,如果应用程序请求所有类别(没有 Last-Modified 标头),则服务器会返回所有类别,但已删除(标有标志)除外。

所提出的解决方案是解决这个问题的最佳解决方案吗?

【问题讨论】:

    标签: rest api http mobile architecture


    【解决方案1】:

    这个问题的最佳解决方案是什么?

    您可能会在网上寻找灵感。见RFC 7234

    重点是:Web 是一个分布式系统,每个客户端都可以管理自己的本地资源表示缓存。资源通过描述其freshness 的元数据交付给客户端;客户有权重复使用他们的本地状态副本,直到它过时为止。对资源的成功不安全操作会自动驱逐该资源先前缓存的表示,并且存在一种机制 (304) 允许服务器以廉价的方式与客户端通信先前缓存的表示仍然是新的。

    但服务器上的更改不会自动传播到所有客户端,也不会从一个资源级联到另一个资源。相反,您需要考虑为每个资源单独选择正确的新鲜度策略。

    这是认识到资源模型设计需要满足与数据模型设计不同的一组约束这一点很重要的原因之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 2016-10-01
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多