Dropwizard - организация вашего проекта, понимание терминологии и т.д.
Я изучаю использование Dropwizard. Я смог следить за руководством по быстрому старту и запускать базовые API REST.
В этой документации существует раздел "Организация вашего проекта".
Он рекомендует организовать ваш проект в следующих частях: project-api, project-client, project-service.
Вот мои вопросы/вопросы:
-
Пожалуйста, объясните, в общих чертах, разницу между "api", "service" и "client".
-
Есть ли пример, который строго следует вышеупомянутому соглашению с помощью dropwizard?
-
"... project-client должен использовать эти классы и HTTP-клиент для реализации полноценного клиента для вашей службы" --- поскольку "project-service" будет иметь API REST, то почему нам нужно использовать HTTP Client?
Спасибо!
Ответы
Ответ 1
-
Dropwizard рекомендует следовать следующей структуре проекта:
{project_name} (т.е. родительский со следующими модулями)
- {project_name} -api: должен иметь все объекты value/POJO, которые вы используете в своем проекте.
- {project_name} -client: должен содержать код клиента, используемый для получения данных из внешнего сервиса отдыха. Может быть исключен, если у вас его нет.
- {project_name} -сервис: содержит оставшиеся (сервис, конфигурация, ресурсы, дао и т.д.).
-
Вы можете найти этот пример полезен, даже если клиентская часть пуста.
-
Как указано в кратком описании для клиента в пункте 1, если ваш проект имеет какой-либо вызов внешним службам отдыха, тогда связанный (HTTP) клиентский код должен идти внутри клиентского модуля. В противном случае исключить сам модуль.
Ответ 2
1) api - как по имени, это интерфейс/контракт, который определяет как Представление (Pojo -Json/Xml) в проекте. Эти модели определяют ваши контракты API, которые могут быть переданы другому проекту, которые потребляют ваш API.
2) сервис - фактическая бизнес-логика и настойчивость. Представления не обязательно должны быть такими же, как ваши объекты Entity (объекты домена). Это более четкое разделение вашего домена и представлений. Логика домена больше не будет связываться с вашим представлением. Хотя это может вызвать значительное дублирование в плане структуры объекта.
Зависимость от проекта - зависит от "api", "клиент"
3) клиент - оболочка Http Client для вызова других веб-сервисов через HTTP-вызовы с использованием HttpClient или Jersey Client. Написание тестов (для конечного пользователя) для контрактов.
Зависимость от проекта - зависит от "api"
Надеюсь, что это поможет.