首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web API、API Controller和如何更新模型?

Web API、API Controller和如何更新模型?
EN

Stack Overflow用户
提问于 2012-02-29 01:26:22
回答 2查看 2.3K关注 0票数 1

我正在尝试MVC4中的API控制器,并且有一个关于使用put、更新对象时的最佳实践的问题。

我使用RavenDB作为数据存储,并创建了一个自定义MediaTypeFormatter,它有一个JsonDynamicConverter类型的转换器,可以将json序列化和反序列化为动态对象。如上所述,我的API控制器Put方法如下所示

代码语言:javascript
复制
 public void Put(string id, dynamic model) {}

这个动态对象看起来有点像这样:

代码语言:javascript
复制
pageModel = {
  "id": "pages-2",
  "metadata": {
    "changed": "2012-02-28T17:16:27.323Z"
  },
  "parent": {
    "id": "pages-1",
    "slug": null
  },
  "children": []
}

所以,到目前为止一切正常,但是现在我需要用id pages-2更新我的实体。ApiController中不存在UpdateModel,因此我的问题是,执行此操作的最佳/首选方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2012-02-29 08:15:12

只需调用RavenDB来加载具有适当ID的对象,对其内容进行更改,然后再次持久化它。

不需要担心任何UpdateModel调用。它不适用于这里。

注意一个潜在的问题,因为您在模型中包含了id。如果我使用该主体向http://server/controller/pages-3发送PUT命令,会发生什么情况?您可能应该向我发送一个错误的请求响应或类似的东西,这取决于您希望您的API如何工作。

票数 0
EN

Stack Overflow用户

发布于 2013-03-19 21:14:51

有什么理由不在你的参数中显式吗?我会定义一个UpdateModel,并将其作为参数而不是动态参数。然后,它还可以对验证进行建模。

ASP.NET WebApi包括从JSON和XML转换为控制器方法的输入的处理。如果我没有遗漏什么的话,我猜你的自定义mediatypeformatter和dynamic的组合在这种情况下是不必要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9486745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档