【问题标题】:How to implement Partial Updates (PATCH) in Restful Web API (.NET/ JSON/ EF6) Server side如何在 Restful Web API (.NET/ JSON/ EF6) 服务器端实现部分更新 (PATCH)
【发布时间】:2017-02-19 16:09:33
【问题描述】:

我一直在做一个 Web API 项目(Restful),其中模型(和相应的表)的大小非常大,因此绝对需要部分更新。

我已经查看了模型的一个子部分的 POST 选项,但鉴于模型具有大量字段(和自定义字段),我认为公开这么多 URI 是不可行的)。

我知道使用 PATCH 动词,我可以允许客户端进行部分更新,但我正在努力概念化我应该如何在服务器端捕获相同的内容,然后找出发生了什么变化(将 JSON 发布到模型转换)所以我可以区分客户(因为她想更新字段)将哪些字段明确设置为 NULL 与。由于没有更新,什么是 NULL。

我应该使用自定义映射器吗?还是应该在字段级别创建通用属性并捕获状态?

我已经在网上和 SOF.com 上搜索过(并且仍在搜索),但我没有找到任何权威/具体的信息,因此请向专业人士寻求反馈。

感谢您的帮助!

【问题讨论】:

    标签: c# json rest entity-framework-6 patch


    【解决方案1】:

    KevinDockx 为 MVC 创建了处理 PATCH 的插件。这是nuget链接https://www.nuget.org/packages/Marvin.JsonPatch/

    这个插件是 .NET 的 RFC 6902 实现..

    基本上,当您从客户端发送 json 补丁时,您必须构建一系列操作

    [
        { "op": "add", "path": "/foo", "value": "bar"},
        { "op": "replace", "path": "/baz", "value": "boo" }
    ]
    

    当然,只有您想遵循规范才重要。在其他情况下(我的意思是您自己对 PATCH 工作原理的理解)您必须实现您的自定义逻辑。

    编辑

    我个人发现,由于我的 DTO 的扁平性质,只有“替换”操作在我的用例中才有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2011-01-27
      相关资源
      最近更新 更多