REST API-部分更新

时间:2018-07-18 11:33:33

标签: asp.net rest asp.net-web-api

我正在设计REST API(使用ASP.NET Web API而非ASP.NET核心实现,因为我们目前无法对其进行升级)。

我正在寻找部分更新实体的最佳解决方案。

例如,“ Person”实体具有100个属性,而第三方系统只需更新“ PersonValidityDate”。

什么是最好和最简单的解决方案?

我阅读了一些有关PATCH动词的文章,其中包含JSON补丁或JSON合并补丁,但似乎有点复杂,并且并非所有人都支持...是吗?

我正在寻找一个非常简单的解决方案,任何集成商都可以理解和使用...

您有什么建议?经常使用PATCH吗?

如果我使用POST / PUT并仅提供属性以更新并忽略其他属性,则在反序列化正文时,可为空的属性将为null。如何区分明确设置为NULL的属性和未提供的属性?

1 个答案:

答案 0 :(得分:1)

  

根据 RFC 5789

     

几个扩展超文本的应用程序   传输协议(HTTP)需要功能来做部分资源   修改。现有的HTTP PUT方法仅允许完整   替换文件。该提案添加了一个新的HTTP方法,   PATCH,以修改现有的HTTP资源。

因此,您应该使用PATCH请求来部分更新对象,并使用PUT来完全替换对象。

并且您不应在补丁请求中使用具有空/空字段的完整模型,而应将新模型用于PATCH请求。

您可以查看更多示例here