我正在设计REST API(使用ASP.NET Web API而非ASP.NET核心实现,因为我们目前无法对其进行升级)。
我正在寻找部分更新实体的最佳解决方案。
例如,“ Person”实体具有100个属性,而第三方系统只需更新“ PersonValidityDate”。
什么是最好和最简单的解决方案?
我阅读了一些有关PATCH动词的文章,其中包含JSON补丁或JSON合并补丁,但似乎有点复杂,并且并非所有人都支持...是吗?
我正在寻找一个非常简单的解决方案,任何集成商都可以理解和使用...
您有什么建议?经常使用PATCH吗?
如果我使用POST / PUT并仅提供属性以更新并忽略其他属性,则在反序列化正文时,可为空的属性将为null。如何区分明确设置为NULL的属性和未提供的属性?
答案 0 :(得分:1)
根据 RFC 5789
几个扩展超文本的应用程序 传输协议(HTTP)需要功能来做部分资源 修改。现有的HTTP PUT方法仅允许完整 替换文件。该提案添加了一个新的HTTP方法, PATCH,以修改现有的HTTP资源。
因此,您应该使用PATCH请求来部分更新对象,并使用PUT来完全替换对象。
并且您不应在补丁请求中使用具有空/空字段的完整模型,而应将新模型用于PATCH请求。
您可以查看更多示例here