Apollo 3.0 для работы с GraphQL в многомодульном Android приложении
Давайте рассмотрим, каким образом настроить и использовать последнюю на данный момент версию клиента apollo в многомодульном приложении под android.
Что такое Apollo и когда он используется?
Создаем проект подключаем плагин и зависимости
Создаем новый проект на основе Empty Activity, я назову его ApolloConfig_Example
Создание нового проекта

Создадим несколько модулей, я назову их ‘common’, и ‘modules’,последний в свою очередь будет содержать ‘module_1’ и ‘module_2’
Подключаем плагин Apollo 3.0 во всех gradle файлах наших модулях

После добавления apollo плагина появится сообщение о необходимости синхронизации проекта, но перед этим необходимо добавить настройки для плагина
Для gradle файла модуля ‘app’
Для gradle файла модуля ‘common’
Для gradle файла модуля ‘module_1’ и ‘module_2’
Нажимаем кнопку ‘Sync Now’
Добавляем зависимости в модули ‘common’, ‘module_1’ и ‘module_2’
В Gradle файлах ‘app’, ‘module_1’ и ‘module_2’ добавляем в зависимости модуль ‘common’. Он станет видим для этих модулей.
Создаем необходимые классы
Начнем с файла scheme.graphqls, это файл описывает, какие данные могут быть запрошены, разместить его нужно в корне проекта, на одном уровне с папками ‘app’, ‘common’, ‘modules’.
В модуле ‘common’ создадим класс ‘ApolloClient’, в нем напишем клиент, поскольку он находится в общем модуле, он будет виден всем другим модулям.
В этом же модуле создадим класс ‘GraphqlAdapters’, в нем напишем скалярный адаптер для типа DateTime, который присутствует в схеме, данные которые будут приходить с этим типом, будут автоматически преобразованы в привычный класс Date.
Перейдем к module_1 и module_2, следующие файлы и классы будут почти идентичны для обоих модулей, и сделано для примера.
Создадим файл ‘GetEmployee.graphql’, он будет на основе scheme.graphqls описывать наш запрос, а apollo на основе ‘GetEmployee.graphql’ сгенерирует все необходимые классы.
Далее создадим класс ApiService и cоответствующий ему интерфейс IApiService, там будем описывать наши запросы.
Все готово для написания самого запроса, создадим класс фрагмента, а в нем запрос
Введение в Apollo Client с React на GraphQL

Недавно GraphQL набрал популярность и, скорее всего, заменит Rest API. В этом уроке мы будем использовать Apollo Client для связи с API-интерфейсом GitHub. Мы объединим Apollo Client с ReactJS, но вы можете использовать его и с несколькими другими клиентскими платформами.
В этом руководстве не рассматривается процесс запуска проекта React, но вы можете использовать приложение create-response-app чтобы начать работать.
После того, как у нас появится готовое приложение react, необходимо установить необходимые модули.
Установка модулей
Следующая строка устанавливает все необходимые модули.
Теперь мы можем предоставить наш компонент клиенту.
Предоставление клиенту компонента
Вы можете предоставить клиента в любой точке иерархии компонентов React. Тем не менее, всегда рекомендуется использовать компонент, обертывающий все ваше приложение, клиентом.
В этом примере мы определили маркер API на стороне клиента. Однако вы не должны публиковать свой API токен. Поэтому всегда полезно хранить его на сервере, отделенном от клиентской стороны.
Приложение GraphiQL
Прежде чем погрузиться в запросы, я хочу отметить, что есть очень удобный инструмент под названием GraphiQL для тестирования ваших запросов GraphQL. Прежде чем продолжить, убедитесь, что вы скачали его.
Как только вы откроете GraphiQL, вам нужно установить GraphQL Endpoint и HTTP Headers.
GraphQL Endpoint: https://api.github.com/graphql
Header Name: Authorization
Header Value: Bearer YOUR_TOKEN
Конечно, вам нужно заменить YOUR_TOKEN на свой токен. Не забудьте включить Bearer перед токеном при определении Header Value.
Если вы не хотите загружать приложение, вы также можете использовать онлайн-интерфейс GraphQL API Explorer для GitHub.
Запросы GraphQL
В отличие от REST API с несколькими API ендпоинтами, GraphQL имеет только один ендпоинт, и вы получаете только то, что определено вашим запросом.
Документация GigHub’s GraphQL API даcт вам больше информации.
Начнем с простейшего запроса:
В этом уроке я не буду приводить подробную информацию о запросах. Вы всегда можете обратиться к документации и попробовать запросы в инструментах GraphQL, чтобы узнать, получаете ли вы правильные данные.
Давайте используем следующий запрос для остальной части учебника.
Этот запрос ищет последние 10 репозиториев, соответствующих определенной строке ввода, которые мы определим в нашем приложении.
Он возвращает id, name, description и url для каждого результата.
Использование запроса GraphQL в компоненте React
Нам нужно импортировать два модуля ниже в наш компонент React, чтобы иметь возможность определять запрос в компоненте, а затем передавать результаты компоненту в качестве props.
Теперь мы завершаем наш компонент с graphql HOC (Higher Order Component), чтобы определить параметры запроса, выполнить запрос и затем передать результат в качестве props для нашего компонента.
Ниже приведен финальный вариант нашего компонента.
Проверка данных в консоли
Давайте продолжим и добавим
Когда вы проверите консоль своего браузера, вы увидите два лога с объектами.
Отображение данных
Давайте напишем JSX для отображения извлеченных данных.
Поскольку объект search изначально не существует, мы не можем напрямую попытаться его отобразить. Поэтому сначала нам нужно проверить, были ли получены данные, и объект search готов к использованию.
Это всего лишь базовый пример. Вы можете использовать обычную инструкцию if-else и возвращать разные результаты для вашего метода render.
Вы можете проверить репозиторий Apollo-Client-with-React, клонировать его на свой компьютере и поиграть с ним.
P.S. Не забудьте заменить переменную token на свой собственный токен API для GitHub.
Заключение
Мы рассказали о том, как начать работу с Apollo Client для React. Мы установили необходимые модули, настроили клиент, а затем предоставили его нашему компоненту в верхней части иерархии компонентов. Мы научились быстро тестировать запросы GraphQL, прежде чем внедрять их в нашем реальном приложении. Наконец, мы интегрировали запрос в компонент React и отобразили извлеченные данные.
GraphQL — клиент Apollo
Мы использовали Apollo Server для построения спецификации graphql на стороне сервера. Быстро и легко построить готовый к работе сервер GraphQL. Теперь позвольте нам понять сторону клиента.
Apollo Client — лучший способ использовать GraphQL для создания клиентских приложений. Клиент разработан, чтобы помочь разработчику быстро создать пользовательский интерфейс, который извлекает данные с помощью GraphQL и может использоваться с любым интерфейсом JavaScript.
Apollo Client поддерживает следующие платформы —
| Sr.No. | Платформа и фреймворк |
|---|---|
| 1 |















