Rest API - 部分更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rest API - 部分更新相关的知识,希望对你有一定的参考价值。

我正在设计REST API(使用ASP.NET Web API实现,而不是ASP.NET核心,因为我们现在无法升级它)。

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

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

做到这一点的最佳和最简单的解决方案是什么?

我阅读了一些关于PATCH动词的文章,使用JSON补丁或JSON合并补丁,但它看起来有点复杂,并不是每个人都支持......是吗?

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

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

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

答案

根据RFC 5789

扩展超文本传输​​协议(HTTP)的几个应用程序需要一个功能来进行部分资源修改。现有的HTTP PUT方法仅允许完全替换文档。此提议添加了一个新的HTTP方法PATCH来修改现有的HTTP资源。

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

并且您不应该在使用空/空字段的补丁请求中使用完整模型,而是使用新模型进行PATCH请求。

您可以查看更多示例here

以上是关于Rest API - 部分更新的主要内容,如果未能解决你的问题,请参考以下文章

如果未找到 ID,则 Mongoose 更新文档或插入新文档(Express REST API)

如果未找到 ID,则 Mongoose 更新文档或插入新文档(Express REST API)

REST API (更新删除文档)

Paypal Rest API/更新计划无法更新安装费

用于创建资源的 REST API 补丁方法

从 REST API 更新 Dataflow 作业