【问题标题】:Handling nulls in JSON Merge Patch在 JSON 合并补丁中处理空值
【发布时间】:2017-07-15 19:25:08
【问题描述】:

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

merge patch spec 明确指出,当键设置为 null 值时,应将其从资源中删除。

这对我来说是不可能的,因为我不能简单地删除数据库中某些行的列 - 我“删除”的值只是设置为 null,这违反了规范。

我想到了两个选择:

  1. 违反规范,只需将列设置为null,将它们保留在资源中
  2. 改用 JSON 补丁,与合并补丁相比开销很大

还有其他方法吗?

【问题讨论】:

    标签: json rest api http merge


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-22
        • 2023-03-10
        • 1970-01-01
        • 2014-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多