9. Интеграция - MaxCiv/LibraryArchitecture GitHub Wiki
Созданный сервис предоставляет информацию о всех книгах библиотеки в виде json-ответа. Для создания сервиса стандартными средствами Java был реализован простой HTTP-сервер, который обрабатывает GET-запросы. Сервер запускается отдельно на порте 8000. Для запроса информации о книгах библиотеки необходимо сформировать URI-запрос к серверу: http://localhost:8000/get
.
В ответ сервер формирует ответ в виде json-строки. Сервер получает всю информацию о книгах из фасада ServiceFacade
, а затем сериализует её в json-строку. Для сериализации в json используется библиотека Gson. Сформированная строка далее возвращается пользователю, отправившему запрос.
Пример ответа на запрос:
В качестве внешнего сервиса используется Google Books. API данного сервиса можно использовать, подключив в проекте библиотеку google-api-services-books
(для Gradle это делается строкой compile 'com.google.apis:google-api-services-books:v1-rev99-1.23.0'
). Далее необходимо будет создать свой проект в Google API Console и получить уникальный API-KEY (ключ) для возможности использовать сервис Google Books в своём приложении посредством API.
Работу с API сервиса Google Books реализует класс GoogleBooksService
, расположенный в пакете service.googlebooks
. Здесь реализована функция отправки запроса сервису и разбора ответа (List<GoogleBook> queryGoogleBooks(String query)
), а также две функции для поиска книг по названию (List<GoogleBook> getBooksByTitle(String query)
) и по автору (List<GoogleBook> getBooksByAuthor(String query)
).
Фасад ServiceFacade
предоставляет доступ к сервису, реализуя функции List<GoogleBook> searchGoogleBooksByTitle(String title)
и List<GoogleBook> searchGoogleBooksByAuthor(String author)
.
Для тестирования данного сервиса был написан класс GoogleBooksServiceTest
, который проверяет все функции на работоспособность.
При добавлении новой книги при вводе названия или автора делается запрос к Google Books и далее выводится результат, содержащий наиболее подходящие книги. Нужную книгу можно выбрать в таблице и её данными будет заполнена форма добавления новой книги.