将外部API调用放在分层体系结构春季启动中的何处



我有一个SpringBoot应用程序,它有四层;域、控制器、服务和存储库。

我使用控制器为客户端创建端点,但在应用程序中,我想使用REST对外部API进行一些外部API调用,我不想直接为客户端公开这些调用。

在结构中,您将在哪里实现此类外部调用?我和一个朋友讨论过,创建某种适配器包并在服务层中调用它可能是个好主意,但我不太确定。

我认为,在大多数情况下,这将在您的服务层中,但这也是高度依赖于案例的,如果不是基于意见的话。

根据定义,服务层应该您服务。这意味着,当请求到达应用程序的controller层(处理与外部世界的通信(时,控制器层只应该传输数据(以正确的格式,例如序列化、反序列化(,并将工作委托给服务层(显然反之亦然,将结果传输给外部世界(。

存储库层完全超出了放置外部rest调用的范围。域层应该为您的数据建模,而存储库通常用于抽象数据的存储

现在关于服务层,我认为这就是您的应用程序逻辑所在。这是您选择存储数据(例如,转到存储库(或转到外部rest服务的地方。

然而,强调这种情况的案例依赖性的一点是:Elasticsearch使用rest接口,可以被视为数据存储。那么,我们把打给它的电话放在哪里呢?Spring框架选择在存储库类中表示这些调用,I.也是如此

我认为您可以在服务层或数据访问层中做到这一点。如果外部API调用只是为了获取数据,则可以从数据访问层进行外部API调用。但如果它是用于数据访问之外的任何其他用途,您可以从服务层进行访问。

您可以创建一个adapater类,用于将从外部服务调用接收的数据转换为应用程序中使用的格式。

最新更新