2016-10-11 86 views
1

我一直在研究Web API项目(Restful),其中模型(和相应表格)的大小很漂亮巨大,因此绝对需要部分更新。如何在Restful Web API(.NET/JSON/EF6)服务器端实现部分更新(PATCH)

我已经回顾了模型子部分的POST选项,但是假设模型具有大量字段(和自定义字段),请不要认为暴露这么多URI是可行的)。我知道,使用PATCH谓词,我可以让客户端做部分更新,但我很难概念化如何捕获服务器端的相同,然后找出发生了什么变化(发布JSON到模型转换)这样我就可以区分哪些字段被客户端显式设置为NULL(因为她想更新字段)。由于没有更新,什么是NULL。

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

我已经在SOF.com上搜索过(现在还在做)网络,但是我没有发现任何权威/具体的东西,所以向专业人士反馈意见。

感谢您的帮助!

回答

0

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

这个插件RFC 6902实现了.NET ..

基本上当您从客户端发送的JSON补丁,你必须建立操作的阵列

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

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

编辑

个人而言,我发现,只有“替换”操作是在我的使用情况非常有用,因为我的DTO的平坦性质。