【问题标题】:How should i return data in Web API Controller Methods?我应该如何在 Web API 控制器方法中返回数据?
【发布时间】:2017-01-07 17:08:55
【问题描述】:

我的 UI 需要大量信息。大多数信息已被识别为数据库中的单独实体。例如,显示员工的详细信息。 UI 页面可能是员工详细信息,其中包含有关员工信息的各个部分,例如个人详细信息、地址、联系方式、项目详细信息等。

因此,如果我们为相同的需求派生实体,我们将有以下表格

员工

地址

联系方式

项目

我们将在 DA 层实现存储库模式,并将 ASP.Net Web API 作为我们的 RESTful 服务层。

所以,现在如果我需要在 UI 中显示员工详细信息,最好的方法应该是什么。我的想法在下面提到。

接近

将调用一次 Web Api 来获取员工详细信息。在内部,它将多次连接数据库以获取员工详细信息、地址信息、联系信息、项目信息等并填充到一个 EmployeeDetailsModel(一种 viewmodel)并返回作为 JSON。

这是一个好方法吗?如果有其他更好的方法请提出建议

【问题讨论】:

  • 您真正要问的是,让客户端发出多个请求以从各个模型收集信息或在服务器端组装视图模型并使用单个 Web API 端点返回它是否更好 -我认为答案很大程度上取决于您的客户端技术(它是 Angular SPA 吗?Android/iOS 应用程序?WCF 客户端?)。一般来说,我会说 Web API 不应该与视图模型一起使用,它应该与视图模型不能准确表示真实世界对象的实际领域概念一起使用。 Employee 可以,但 EmployeeView 不会。
  • @Marcus Client 将是纯粹基于 Angular JS、HTML、CSS 和其他 Javascript 的 Web 客户端。
  • 对我来说,在客户端应用异步更容易。在我的项目中,我为每个实体都有控制器。它们尽可能简单并且只返回 JSON。当 SPA 的页面/部分页面加载时,我会并行启动许多 Angular 服务调用(每个实体都有自己的调用)以从服务器收集要显示的数据。目前它工作正常,以后如果需要我可以应用延迟加载。
  • @SayusiAndo 所有数据都应该在一个 CTA 之后加载。员工详细信息 CTA 应立即显示给我。我所说的数据将以 KB 为单位。我是否还应该查看数据大小进行异步/延迟加载

标签: c# asp.net asp.net-web-api asp.net-web-api2 wcf-web-api


【解决方案1】:

采用您的方法可能会证明用户体验不佳,因为用户将等待所有数据被组装。我建议你把你的网页分成几个部分。首先调用员工数据,然后在不同的客户端事件上(比如单击员工的项目单元格)调用员工的项目详细信息(假设它是另一个表)

【讨论】:

  • 所有数据都应该在一个 CTA 之后加载。员工详细信息 CTA 应该一次性显示给我。我所说的数据将以 KB 为单位。
猜你喜欢
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
  • 1970-01-01
  • 2015-07-19
相关资源
最近更新 更多