Вопрос, который у меня есть, может быть недостаточно конкретизирован c, но я постараюсь предложить более подробную информацию.
Я создаю приложение Spring Boot, которое выполняет вызовы API Graph Facebook и 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
Контроллер только сейчас является простым тестовым контроллером, где я проверяю выходные данные запросов, которые я делаю к Graph API. Конфигурация содержит конфигурацию безопасности для входа в OAuth2 Facebook, папка DAO в конечном итоге будет содержать репозитории, в которых будут храниться ответы в базе данных, папка сущностей содержит сущности, которые представляют объекты ответа, а служба находится там, где 'бизнес лог c 'sit sit.
Теперь на этом этапе я делаю вызовы Graph API непосредственно в контроллере. Где в идеале должны выполняться эти вызовы, например, в какой части приложения?
Должна ли папка Service содержать класс FacebookAPIService, который выполняет вызов Graph API, создает объект Feed и возвращает список Например, элементы, а затем методы класса вызываются в контроллере вместо того, чтобы выполнять вызовы, создавать объекты и т. д. в контроллере?
Я понимаю, что в папке DAO я буду хранить свои JpaRepositories, а затем в папке «Сервис» у меня были бы FacebookService и FacebookServiceImpl, которые содержали бы методы для обращения к базе данных, но я хотел уточнить, может ли служба также хранить вызовы API графа.
Мой главный вопрос был бы в приложении Spring Boot, где выполняются вызовы API, где данные записываются / читаются из БД, а данные генерируются и динамически отображаются на веб-сайте на основе API /. БД, как бы вы это структурировали?
Чтобы дополнительно добавить, ответы от Graph API будут использоваться для создания новых вызовов API новостей (например, «Пользователь A опубликовал что-то 5 ноября, какие новостные статьи были размещены на AlJazeera на 5 ноября, а затем объединить два ответа в новый класс, который затем будет вызываться и отображаться на странице "). Я мог бы сделать все эти вызовы в контроллере .... но это просто плохо.