REST API和延迟加载对象

时间:2014-11-10 18:44:54

标签: .net rest asp.net-web-api lazy-loading

我遇到了answer,它引用了超媒体。我的问题很相似。

我正在编写一个主要由移动设备使用的REST API。出于这个原因,我想尝试对高效的网络I / O进行处理。

比如说我有一个包含 TableOfContents (集合)属性的 Book 对象。在我的应用程序中,我想向用户显示所有书籍的列表。然后,当用户选择一本书时,我想向他们展示目录。

现在,在请求我感兴趣的书籍列表时,标题和缩略图,因为列表视图项目中没有显示任何其他内容。我只想在选择书籍时下拉其他项目。这是因为很可能并非所有书籍都会被选中。等等..

延迟加载方法的一些可能解决方案:

  • 有两种对象类型。 BookLight和Book。 BookLight只有标题和缩略图。书有一切。这不是延迟加载,看起来像垃圾方法。
  • Rest API将返回所有字段的一个对象,除非请求中有查询说明需要哪些字段,而不返回任何其他字段。然后,当选择对象并且需要完整对象时,将使用其余字段进行新查询。或者,将查询留空以刷新整个对象。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我最终为这个常见问题找到了最合适的解决方案。

我为通过REST API传递的每个实体使用自定义ViewModels和InputModels。我还将为每个实体保留DTO,因为这些可能很有用。

继续问题中的Book示例。我会创建一个BookSummaryViewModel。此对象只包含标题和缩略图等项目。我还可以添加一些其他字段,如CountReviews。 CountReviews在这里工作,因为ViewModel具有汇总本书的上下文。它不适合BookDTO,因为它严格来代表实际的书。

我使用AutoMapper映射到我的ViewModel,效果很好。

这是一个概述。对于一篇很棒的文章,请点击link