【发布时间】:2020-03-11 19:15:37
【问题描述】:
我在措辞上遇到了一些问题,但基本上,我发现在我工作的地方创建一个连接到数据库的 Java Spring Rest API 并且前端应用程序使用该 API(web-app ->服务 API -> 数据库)。这将应用程序服务 API 耦合到数据存储,并且通常是前端应用程序的特定用例。我看到许多服务 API 创建对同一个数据库的相同 get 调用。这对我来说似乎是错误的。
我相信为数据库本身创建一个 API,然后运行服务 API 会更好。 (网络应用程序 -> 服务 API -> 数据存储 API -> 数据库)。这将允许所有服务访问数据库,而无需直接耦合到数据库,并且必须为 30 个应用程序管理对该数据库的访问。它还允许任何除了数据之外不需要任何东西的应用程序只使用现有的数据存储 API。我记得一篇关于亚马逊如何要求每个数据存储都有一个 API 的文章,这就是我看到的处理方式。
拥有数据存储 API 并使用服务 API 连接到该 API 的想法是否正确?还是我应该用其他方法来处理这个问题?
【问题讨论】:
-
解耦很好,但这取决于您的详细信息。我认为再添加一个 API(“胶水”)会引入复杂性。如果您通过 Rest API 和一些 API 密钥公开您的数据,那还不够好吗?多一个 API 就是另一件可能出错的事情……你可能想加入另一个 API,但不强迫每个人都使用它。这是架构师的架构决策。
-
作为背景:我们有一个带有阿尔伯斯坐标的系统。不是每次我们访问的每个资产都转换为 gps,而是有 4 个项目,每个项目获取他们需要访问的每个对象(例如所有计算机或所有路由器)的坐标,并将它们与 gps 坐标一起存储在数据库中以供其应用程序使用。有一个 api 来访问该数据库并选择作为 gps 检索不是更好吗?这样可以在需要时拉取而不是存储4次?
标签: java spring database rest api