处理JSON Merge Patch

时间:2017-07-15 19:25:09

标签: json rest api http merge

我使用application/merge-patch+json作为我的内容类型来通过HTTP PATCH方法编辑资源。我将数据存储在RDBMS中。

merge patch spec明确指出当密钥设置为null时,应从资源中删除。

但是我无法做到这一点,因为我不能简单地删除数据库中某些行的列 - 我删除的值'只是设置为null,这违反了规范。

我想到了两个选择:

  1. 违反规范,只需将列设置为null,并将其保留在资源
  2. 使用JSON补丁,与合并补丁
  3. 相比,这是一个相当大的开销

    还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

API资源上的DELETE并不一定要实际删除数据库中的资源 - 它可能是一个软删除(这是你正在做的事情,在事实)。

只要它被API正确表示为已删除(例如,您可以省略显示空值 - 我认为JSON默认为您执行此操作),可以认为您尊重规格。

答案 1 :(得分:0)

RFC没有定义存储数据的方式,仅与JSON有关。 API /域模型应与实体层/数据库分开。 您如何在这两者之间进行映射取决于您。