【问题标题】:KISS and DRY API design [closed]KISS 和 DRY API 设计 [关闭]
【发布时间】:2021-09-27 08:56:35
【问题描述】:

我需要创建一个类似页面的仪表板。这不是太复杂。可以把它想象成一个只有一个时间线图表、几个数字和几个网格的页面,something like this

我的数据已经有一个通用的 CRUD REST API。

我应该专门为此页面创建 API 方法,例如 getDashboardData 等,还是只调用许多相关的 crud API 方法并处理前端/页面中的数据?

从创建简单且可管理的软件架构 (DRY/KISS) 的角度来看,您会推荐哪种方法,而不是专门出于性能/安全原因?

【问题讨论】:

    标签: api rest django-rest-framework architecture dry


    【解决方案1】:

    简答:我会制作专用的报告 API。

    长答案(为什么):

    一般来说,系统/解决方案设计认识到交易行为/目标和分析行为/目标之间的差异。要通过数据镜头了解这一点,请查看 OLTPOLAP

    您似乎已经认识到(或至少怀疑),您可以使用现有的 CRUD API,但它们不是理想的选择,因为它们是针对您想要跨多个交易/记录进行报告的交易- 您最终将不得不发出大量请求,这会给您的 API 以及它们连接的任何系统带来不必要的负载。

    因为它们是专门构建的,所以专用的报告 API 应该更好,因为:

    • 它们提供了以您需要的方式获取所需数据的最佳机会。它们的设计方式将使其易于调用和处理返回的数据。
    • 他们的实现可以考虑底层数据/系统,并尽量减少对源系统的影响。例如,在“严重”场景中,您可能决定缓存数据副本以用于报告目的,这样任何“繁重”的报告查询都不会影响操作性能。您还可以更改数据的结构,使其更适合报告。
    • 拥有专用的报告 API 意味着您可以选择向谁公开该 API 与其他人、应用不同级别的安全性等。
    • 拥有一个专用的报告 API 会为您的解决方案增加一些复杂性和额外的代码,但会提供一个更易于维护的更简洁的结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      相关资源
      最近更新 更多