【问题标题】:SPA - handling DTOsSPA - 处理 DTO
【发布时间】:2017-12-08 05:07:26
【问题描述】:

我想基于任何 js 框架实现 SPA,例如角 JS。我已经有许多现有的 Web API,其中包含我需要在应用程序上显示的信息。我必须再添加 1 个来管理新信息。新的将引用其他 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 api web


    【解决方案1】:

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

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

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

    对于 Angular,一种方法是否比另一种更好,并不重要。角不在乎。 :-)

    【讨论】:

    • 我还认为第一个更好,因为该服务应该是单一的责任,当我将它合并到 Order Web Api 中时,它取决于其他的。您对此有何看法?
    • 这一切都取决于使用它的上下文。在您上面的示例中,我可能不会将所有内容合并到一个调用中。但我可能会将订单信息和产品数据合并到一个要调用的 API 端点中,然后在单独的调用中检索用户信息。
    猜你喜欢
    • 2019-02-20
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2016-02-23
    • 2017-02-15
    • 1970-01-01
    相关资源
    最近更新 更多