SPA - 处理 DTO

问题描述 投票:0回答:1

我想基于任何js框架实现SPA,例如角JS。我已经有许多现有的 Web API,其中包含我需要在应用程序上显示的信息。我必须再添加 1 个来管理新信息。新的 DTO 将引用其他 DTO。我的问题是,更好的方法是调用 API 并在 Web 应用程序上编译 DTO 或在新 API 中调用 API 合并所有数据并使用现成的对象创建 GET 方法。

第一种从网站角度来看的方法:

Call (I know userId - based on logged in user [in this example = 1])

/get/order/{userId}
{
UserId: 1
Products:{1,2}
}

based on that call:

/get/user/1
{
FirstName: test,
LastName: test
}

/get/product/1
{
Price: 10,
Name: Test
}

/get/product/2
{
Price: 100,
Name: Test2
}

合并 Angular Js Web 中的所有数据

从网站角度来看第二种方法:

合并 Order Web API 上的所有内容

Call:

/get/ordermerged/{userId}
{
   FirstName: test,
   LastName: test
   Products:
   {
      {
         Price: 10,
         Name: Test
      },
      {
         Price: 100,
         Name: Test2
      }
   }
}

我附上屏幕截图以更好地概述。

Diagram

javascript c# angularjs webapi
1个回答
0
投票

这是可重用性和专业化之间的权衡。可重用性带来了明显的优势——您最终可能需要做更少的工作。专业化带来的优势是您的前端可以按原样使用 API。通过专业化,您也将只加载您实际需要的数据,而对于许多独立的 API,可能会存在冗余数据,并且可能会稍微增加一些开销。

我真的不认为存在一种方法比另一种方法更好的概念。这完全取决于您的具体情况是否值得。我认为你应该根据具体情况选择一种方法。如果某些端点实际上并未被重用,您不妨创建一个“合并”/专用版本,在一次调用中即可获得所有内容。在应用程序的其他部分,您可能拥有更可重用的端点,因此您坚持使用它们,并在客户端进行更多“处理”。

关于性能(单个 API 调用与多个 API 调用),HTTP/2 协议可能会稍微推动多个较小的 API 端点。

对于 Angular 而言,一种方法是否优于另一种方法并不重要。角不在乎。 :-)

© www.soinside.com 2019 - 2024. All rights reserved.