在 Spring Boot 中放置调用 REST API 和修改实体的方法的位置



我的问题最初可能不够具体,但我会尝试提供更多细节。

我正在构建一个Spring Boot应用程序,用于调用Facebook Graph API和News API。到目前为止,我的结构有:

.
└── com
└── psyonik
└── FBAccess
├── config
│   └── SecurityConfig.java
├── controller
│   └── HomeController.java
├── dao
├── entity
│   ├── Feed.java
│   ├── Paging.java
│   ├── Post.java
│   └── User.java
├── FbAccessApplication.java
└── service
└── NewsLoaderService.java

刚才的控制器是一个简单的测试控制器,我正在检查对图形 API 发出的请求的输出。该配置包含 OAuth2 Facebook 登录的安全配置,DAO 文件夹最终将保存将响应保存到数据库的存储库,实体文件夹包含表示响应对象的实体,服务是"业务逻辑"应该所在的位置。

现在,此时,我直接在控制器中调用图形 API。理想情况下,这些调用应该在哪里进行,例如在应用程序的哪个部分?

服务文件夹是否应该保存一个 FacebookAPIService 类,该类调用图形 API,构建一个 Feed 对象并返回项目列表,然后在控制器中调用该类的方法,而不是进行调用,在控制器中构建对象等?

我知道在DAO文件夹中我会保留我的JpaRepository,然后在服务文件夹中,我将有一个FacebookService和一个FacebookServiceImpl,它们将保存与数据库通信的方法,但我想澄清该服务是否也可以保存对图形API的调用。

我的主要问题是,在调用 API 的 Spring Boot 应用程序中,数据是从数据库写入/读取的,数据是基于 API/DB 动态生成并显示到网站,您将如何构建它?

为了进一步补充,来自图形 API 的响应将用于创建对新闻 API 的新调用(例如,"用户 A 在 11 月 5 日发布了一些内容,11 月 5 日在半岛电视台发布了哪些新闻文章,然后将这两个响应合并到一个新类中,然后调用该类并显示在页面上"(。我可以在控制器中进行所有这些调用....但这很糟糕。

这些通常称为服务。因此,创建一个服务包并将它们放在那里。如果有多个服务与同一事物相关,您也可以将它们分组在那里。因此,如果你发现你需要更多与FB相关的服务,这些服务在逻辑上处理不同的操作,那么你可以在不同的服务中拥有它们,但都在services.facebook下,比如:services.facebook.FacebookAuthService.java和services.facebook.FacebookGraphService.java

最新更新