Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
4个月前关闭。
我有一个SpringBoot应用程序,它具有四层;域,控制器,服务和存储库。
我正在使用控制器为客户端创建端点,但是在应用程序中,我想使用REST对我不想直接为客户端公开的外部API进行一些外部API调用。
您将在结构中的哪个位置实现此类外部调用?我正在和一个朋友讨论,创建某种适配器包并在服务层中调用它可能是一个好主意,但我不确定。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
4个月前关闭。
我有一个SpringBoot应用程序,它具有四层;域,控制器,服务和存储库。
我正在使用控制器为客户端创建端点,但是在应用程序中,我想使用REST对我不想直接为客户端公开的外部API进行一些外部API调用。
您将在结构中的哪个位置实现此类外部调用?我正在和一个朋友讨论,创建某种适配器包并在服务层中调用它可能是一个好主意,但我不确定。
最佳答案
我认为在大多数情况下,这将在您的服务层中,但同样,这很大程度上取决于大小写,如果不是,则基于意见。
根据定义,服务层应该为您服务。这意味着,当请求到达应用程序的控制器层(处理与外界的通信)时,控制器层仅应传输数据(采用适当的格式,例如序列化,反序列化),并将工作委托给服务层(反之亦然,将结果转移到外部世界)。
域和存储库层超出了放置外部rest调用的范围。域层应该用于对数据建模,而存储库通常用于抽象数据的存储。
现在关于服务层,我认为这是您的应用程序逻辑所在。您可以在此处选择存储数据(例如,转到存储库)或转到外部休息服务。
但是,仅强调这一点取决于情况:Elasticsearch与rest接口一起使用,可以视为数据存储。那么我们在哪里打电话呢? Spring框架选择在存储库类中表示这些调用,我也会这样做。