Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        4个月前关闭。
                                                                                            
                
        
我有一个SpringBoot应用程序,它具有四层;域,控制器,服务和存储库。

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

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

最佳答案

我认为在大多数情况下,这将在您的服务层中,但同样,这很大程度上取决于大小写,如果不是,则基于意见。

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

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

现在关于服务层,我认为这是您的应用程序逻辑所在。您可以在此处选择存储数据(例如,转到存储库)或转到外部休息服务。

但是,仅强调这一点取决于情况:Elasticsearch与rest接口一起使用,可以视为数据存储。那么我们在哪里打电话呢? Spring框架选择在存储库类中表示这些调用,我也会这样做。

10-02 04:45
查看更多