我正在使用application/merge-patch+json
作为我的内容类型,通过HTTP PATCH方法编辑资源。我把我的数据存储在RDBMS中。
合并修补程序规范明确指出,当键设置为null
值时,应从资源中删除该键。
但是,这对我来说是不可能的,因为我不能简单地删除数据库中某些行的列 - 我"删除"的值只是设置为null
,这违反了规范。
我想到了两个选择:
- 违背规范,只需将列设置为
null
,将它们保留在资源中 - 改用JSON补丁,与合并补丁相比,这是一个相当大的开销
还有其他方法吗?
API 资源上的DELETE
不必实际删除数据库中的资源 - 它可能是软删除(事实上,这就是您正在做的事情)。
只要它被 API 正确表示为已删除(例如,您可以省略显示空值 - 我认为 JSON 默认情况下会为您执行此操作),就可以说您尊重规范。
RFC 没有定义你如何存储数据,它只与 JSON 有关。 API/域模型应与实体层/数据库分离。 如何在这两者之间映射,取决于你。