asp.net-mvc-3 – WebAPI PUT / POST中的部分实体更新
|
假设您有一个存储库方法来更新文档: public Document UpdateDocument(Document document)
{
Document serverDocument = _db.Documents.Find(document.Id);
serverDocument.Title = document.Title;
serverDocument.Content = document.Content;
_db.SaveChanges();
return serverDocument;
}
在这种情况下,实体有两个属性.更新文档时,JSON请求中都需要这两个属性,因此请求PUT / api /文件夹与一个 {
"documentId" = "1","title" = "Updated Title"
}
将返回错误,因为没有提供“内容”.我这样做的原因是因为即使用户不能更新的可空属性和属性,强制客户端在请求中指定这些字段似乎更安全,以避免用空服务器覆盖未指定的字段. 这导致我在PUT和POST请求中始终要求每个可更新属性的做法,即使这意味着为这些属性指定null. 这是很酷,还是有一个我还没有学到的模式/实践,这可能通过发送只需要通过电线来促进部分更新? 解决方法API设计中的最佳做法是使用HTTP PATCH进行部分更新.事实上,像你这样的用例是IETF首先介绍它的原因. RFC 5789定义非常精确:
Mark Nottingham在API设计 – http://www.mnot.net/blog/2012/09/05/patch中写了一篇关于使用PATCH的伟大文章 在你的情况下,那将是: [AcceptVerbs("PATCH")]
public Document PatchDocument(Document document)
{
Document serverDocument = _db.Documents.Find(document.Id);
serverDocument.Title = document.Title;
serverDocument.Content = document.Content;
_db.SaveChanges();
return serverDocument;
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在ASP.NET中的dropdownlist控件中处理长文本
- ADO.NET读书笔记系列
- asp.net-mvc – 在IIS Express上设置SMTP
- asp.net – ASP MVC授权所有操作除了几个
- asp.net-mvc-3 – ASP.NET MVC – 导航当前页面突出显示
- asp.net-mvc – Asp.Net核心MVC6如何最初在Identity 3中添加
- asp.net – 在oauth身份验证后获取Twitter用户名
- asp.net – 如何在构建期间从Visual Studio调用aspnet_comp
- asp.net-mvc – 使用ASP.NET会员资格和配置文件与MVC,如何创
- ASP.NET MVC 2应用程序中的区域可以映射到子域吗?
- asp.net-mvc-3 – asp.net mvc3请求线程亲和
- ASP.NET Web窗体:母版页和CSS文件
- asp.net – 我们可以在网页中使用多种形式吗?
- ASP.NET MVC Web应用程序中的控制器是否应该调用
- asp.net-mvc-3 – 如何将int数组传递给RouteValu
- asp.net-mvc – 授权属性不工作MVC 5
- asp.net – MVC 2 AntiForgeryToken – 为什么对
- asp-classic – 哪里可以存储经典ASP的连接字符串
- 为什么默认的ASP.NET Forms认证Cookie在其默认名
- asp.net – 使用jQuery显示ashx图像?
