我需要创建一个类似面板的页面。它并不太复杂。把它想象成一个只有一个时间线图、几个数字和几个网格的页面,诸如此类。
我已经为我的数据提供了一个通用的CRUD rest API。
我应该专门为这个页面创建API方法,比如getDashboardData
等,还是只调用许多相关的crud API方法并处理前端/页面中的数据?
从创建一个简单且可管理的软件体系结构(DRY/KISS(的角度来看,而不是出于性能/安全原因,您建议采用什么方法?
简短回答:我将专门报告API。
长答案(原因(:
通常,系统/解决方案设计会识别事务行为/目标和分析行为/目标之间的差异。要从数据角度理解这一点,请看一下OLTP与OLAP。
正如您似乎已经认识到的(或至少怀疑的(,您可以使用现有的CRUD API,但它们不是理想的选择,因为它们围绕着交易,当您想在许多交易/记录中进行报告时,您最终将不得不发出大量请求,这将给您的API和它们连接的任何系统带来不必要的负载。
因为它们将是专门构建的,所以专门报告API应该更好,因为:
- 它们提供了以您需要的方式获取所需数据的最佳机会。它们的设计方式将使它们易于调用和处理返回的数据
- 它们的实现可以考虑底层数据/系统,并尽量减少对源系统的影响。例如,在";严重的";场景中,您可以决定缓存数据的副本以用于报告目的;"重";报告查询不会影响操作性能。您还可以更改数据的结构,使其更适合报告
- 拥有一个专门的报告API意味着您可以选择将该API公开给谁,而不是其他人,应用不同级别的安全性,等等
- 有一个专门的报告API会给您的解决方案增加一些复杂性和额外的代码,但会提供一个更干净的结构,应该更容易维护