Где разместить методы, которые делают вызовы REST API и изменяют сущности в Spring Boot - PullRequest
1 голос
/ 06 января 2020

Вопрос, который у меня есть, может быть недостаточно конкретизирован 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 ноября, а затем объединить два ответа в новый класс, который затем будет вызываться и отображаться на странице "). Я мог бы сделать все эти вызовы в контроллере .... но это просто плохо.

1 Ответ

1 голос
/ 06 января 2020

Обычно это службы. Так что создайте пакет услуг и имейте их там. Если существует несколько служб, связанных с одной и той же вещью, вы можете сгруппировать их там же. Так что, если вы видите, что вам нужно больше связанных с FB сервисов, которые логически связаны с различными действиями, то вы можете иметь их в разных сервисах, но все в рамках services.facebook, например: services.facebook.FacebookAuthService. java adn services.facebook.FacebookGraphService. java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...