Что такое GraphQL и как использовать его в Android

Что такое GraphQL и как использовать его в Android

❤ 601 , Категория: Новости IT,   ⚑ 13 Мар 2018г


Мы все работали с REST API, используя их с первых дней в разработке. Но по мере того, как запросы усложнялись, а сами данные расли, такие API стали все более дорогими как по времени выполнения, так и по потребляемым ресурсам. Требовался фреймворк или слой, который мог бы сделать соответствующую оптимизацию в запросах и использовании API. Так и появился GraphQL.

Что такое GraphQL?

GraphQL – это язык запросов для API для получения данных. Это альтернатива REST API. Он не специфичен для одной платформы и работает для всех типов клиентов, включая Android, iOS или веб. Он располагается между вашим сервером и клиентом и помогает запрашивать данные более оптимизированным способом. Давайте посмотрим, почему:

Клиентоориентированный, вы получаете только то, что вам нужно: это означает, что клиенты определяют то, какой ответ им нужен – это дает клиенту больше контроля над сервером.

Пример запроса и ответа:

Query:

Response:

В этом примере клиента запрашивает имя, описание, количество форков и URL соответствующего репозитория, и поэтому в ответ получает только те поля, которые были запрошены, что сократит время анализа по сравнению со случаем, в котором мы получим подробный ответ JSON.

Избегает выполнения нескольких запросов: в случае REST API мы должны поддерживать несколько конечных точек. Например, один end point для получения «id» пользователя из /users и второй для получения уже нужной информации о пользователе из /users /<id>. Это два запроса. GraphQL уменьшит эту ситуацию до одного запроса благодаря концепции Arguments.

Читайте также:  Яндекс.Еда и Нетмонет избавят рестораны от кэша

Resultant single Query:

Важные инструменты и API

Итак, вы уже хотите начать, но вам нужны уже работающие интерфейсы для использования на стороне клиента и другие важные инструменты. Итак, вот интересный список, который вы можете использовать прямо сейчас или добавить в закладки на будущее.

Работающие GraphQL:

Инструменты:

  • GraphiQL: Это плагин для вашего браузера, который используется для проверки ваших запросов. Вы можете настроить свои запросы, добавив URL и разные типы заголовков.
  • Altair GraphQL Client: Это клиент для GraphQL, который также доступен как дополнение для Mozilla Firefox для проверки запросов.

PS: Если у вас уже есть REST API и вы хотите перейти к GraphQL, вы можете использовать express-graphql, который создаст GraphQL-оболочку вокруг вашего REST API или SOAP, а затем вы можете использовать его как API-интерфейс GraphQL.

Запуск GraphQL на ANDROID

Для тестирования GraphQL на Android я сделал два проекта. Один из них – простой проект, просто отправляющий запросы по URL-адресу с помощью Retrofit с соответствующими заголовками. Второй использует GraphQL через apollo-android, который является совместимым клиентом, генерирующим Java-модели в соответствии с вашим запросом, что облегчает получение данных от API.

Начнем с настройки apollo-android и того, как его использовать для создания следующей демонстрации:

1. Конфигурация apollo-android и настройка.

В вашем проекте build.gradle добавьте следующее:

Теперь перейдите в app build.gradle, добавьте следующее сверху:

Теперь в зависимостях добавьте следующее:

После этого синхронизируйте свой проект.

2. Добавление файлов для CodeGen моделей

Для кодогенерации моделей два файла должны быть добавлены в проект – первый с расширением .graphql, а второй schema.json, который также является источником для генерации кода моделей.

  • Для schema.json у вас должен быть apollo-codegen, который используется для отправки introspection запроса на сервер и получения schema.json. Для получения apollo-codegen выполните следующие действия:
  • Теперь создайте файл с запросами .graphql и добавьте следующий запрос:

Создайте каталог с именем «graphql» в папке /main вашего проекта на одном уровне с каталогом java и вставьте оба файла. Теперь сделайте ребилд проекта, и когда сборка закончится, вы увидите автоматически созданные модели в build/generated, как показано на следующем скриншоте:

3. Настройка клиента Apollo

Apollo-android использует okhttp-клиент для отправки запросов и получения ответов. Для этого настройте клиент, добавив соответствующие заголовки, а также перехватчик okhttp. Добавьте соответствующий okHttpClient в ApolloClient.builder (), как показано выше.

Читайте также:  Музыкальный магазин с акустическими домиками

4. Запрос от клиента.

Из клиента создайте запрос, как показано выше, и передайте соответствующие аргументы. Обработайте результат, как показано выше, и соответственно измените UI.

Весь проект для изучения вы можете найти здесь.

Оставить отзыв

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*
*

top