【问题标题】:REST API for UI - One General Endpoint vs Endpoint per ComponentUI 的 REST API - 每个组件一个通用端点与端点
【发布时间】:2021-01-10 05:19:10
【问题描述】:

假设我们有两个微服务:公司 API 和帐户 API。
我们还有一个仪表板,显示有关帐户的一些数据和可视化。

仪表板包括三个小部件(为了简化):

小部件 1 - 按某些条件过滤的帐户表格,例如,仅显示待处理帐户。它还显示与帐户的公司属性相关的几列。

小部件 2 - 按帐户属性之一显示帐户细分的饼图​​。

小部件 3 - 另一个显示公司帐户明细的图表。

理论上,仪表板中的所有小部件都显示有关同一实体 - 帐户的数据。
现在,我想问一下在 UI 中获取和显示帐户的两种方法:

一般 REST 端点方法

  • 创建一个用于获取帐户的通用端点。
  • 为获取公司创建一个通用端点。
  • 用户进入页面后获取所有帐户。
  • 用户进入页面后获取所有公司。
  • 让每个小部件根据自己的需要操作、过滤和连接数据。
  • 大部分逻辑位于前端。

每个小部件的 REST 端点方法

  • 为每个小部件创建一个端点,该端点返回特定小部件的所有相关数据,这些数据已根据小部件需求进行过滤、操作和连接。
  • 每个小部件都会调用其端点并显示数据。
  • 大部分逻辑位于后端。

我的问题是:

  • 每种方法的优缺点是什么?
  • 在哪种情况下,您会选择一种方式而不是另一种方式?
  • 还有其他想法可以解决这个用例吗?

【问题讨论】:

    标签: rest microservices api-design


    【解决方案1】:

    以下是我对此的想法:

    • 如果您为每个实体创建一个通用端点,那么前端工作负载取决于您从后端获得的数据量(帐户/公司的数量)。如果您对这些实体有限制(比如最多 10 个帐户),那么这应该不是问题。如果不是,那么(随着时间的推移)走这条路可能会有问题。
    • 我会考虑每个实体一个端点的一种情况是,如果您有其他组件(更重要)正在使用来自此 REST API 的数据,并且它们需要以这种方式获取数据。但即便如此,如果真的有必要,我还是会三思而后行。
    • AFAIK,关于 UI 数据流的最佳做法是,您应该在后端做尽可能多的工作,您可以控制资源并有优化空间。
    • 您可以考虑的一个想法是考虑一种更有效地存储数据(已为视图做好准备)的方法,以最大限度地减少后端工作。

    【讨论】:

      猜你喜欢
      • 2019-03-09
      • 2016-01-01
      • 1970-01-01
      • 2017-05-16
      • 2019-09-02
      • 2016-04-20
      • 2022-10-21
      • 1970-01-01
      • 2012-01-22
      相关资源
      最近更新 更多