Анонсируем трек для iOS для Learn Apollo

Это гостевой пост от Николаса Бурка, который работает над обучением iOS и GraphQL в Graphcool, великолепной бэкэнд-платформе GraphQL.

Learn Apollo - это интерактивное руководство, в котором объясняется, как разрабатывать приложения с использованием бэкэнда GraphQL и клиента Apollo. Это самый быстрый способ начать работу с Apollo и GraphQL, предлагая вам практические примеры использования клиентской технологии по вашему выбору - будь то React, React Native, Angular или Vue.

Примечание. Если вы никогда раньше не слышали о GraphQL, это парадигма проектирования API, которая была введена Facebook и устраняет многие недостатки нынешнего стандарта REST де-факто. Apollo - это библиотека для выборки данных на стороне клиента , которая позволяет легко работать с GraphQL API и извлекать выгоду из встроенных функций, таких как кэширование, подписки, оптимистичный пользовательский интерфейс, разбиение на страницы и рендеринг на стороне сервера без накладные расходы на их самостоятельную реализацию!

После успешного запуска Learn Apollo for React & React Native мы рады представить вам трек iOS для Learn Apollo. Подобно другим трекам, которые вы можете найти на сайте, цель состоит в том, чтобы создать полноценное приложение Pokédex, которое демонстрирует основные функции взаимодействия с серверной частью GraphQL с использованием клиента Apollo - только на этот раз изнутри iOS приложение с использованием Swift! 🚀

Клиент Apollo для iOS

Клиент Apollo для iOS - лучший способ работать с GraphQL API из нативного приложения для iOS. Разработчики, использующие клиент, получат преимущества от двух основных функций:

  • Генерация типов на основе запросов и изменений GraphQL
  • Нормализованный кеш и автоматические обновления пользовательского интерфейса

Генерация типов

Первой и, предположительно, наиболее важной особенностью клиента Apollo iOS является генерация собственных типов Swift, которые отражают требования к данным вашего конкретного приложения. Типы создаются на основе всех запросов и изменений, указанных в проекте Xcode приложения.

Этот подход использует систему статических типов Swift и, в отличие от большинства других подходов к выборке данных, обеспечивает безопасность во время компиляции для разработчика с точки зрения того, какие данные они могут ожидать от серверной части. В Swift это означает, что разработчики могут избавиться от всех необязательных свойств, которые им пришлось бы использовать при синтаксическом анализе нетипизированного JSON в своих объектах модели, что обеспечивает дополнительную безопасность при сохранении гибкости при изменении требования к данным.

Нормализованное кеширование и автоматические обновления пользовательского интерфейса

Вторая важная функция клиента Apollo iOS - это нормализованный кеш, который позволяет автоматически обновлять пользовательский интерфейс. Ответы, которые клиент получает от сервера, сглаживаются и помещаются в хранилище на стороне клиента. Подобно клиенту Apollo для других платформ, запросы отслеживаются реактивным образом, поэтому функция обновления автоматически запускается всякий раз, когда данные, связанные с отслеживаемым запросом, изменяются в хранилище - независимо от того, где это изменение пришли из!

Почему разработчику iOS должен быть интересен GraphQL?

В Graphcool мы твердо уверены, что GraphQL - это парадигма дизайна API будущего! Несмотря на свой молодой возраст, он уже оказал невероятное влияние на то, как веб-разработчики пишут свои приложения и взаимодействуют с серверными модулями.

Мы были разочарованы различиями между данными, которые мы хотели использовать в наших приложениях, и запросами к серверу, которые им требовались. Мы не рассматриваем данные как URL-адреса ресурсов, вторичные ключи или таблицы соединений; мы думаем об этом с точки зрения графа объектов и моделей, которые мы в конечном итоге используем в наших приложениях, таких как NSObjects или JSON . - Ли Байрон (соавтор GraphQL, Facebook)

Хотя GraphQL до сих пор получил широкое распространение в сообществе веб-разработчиков, Facebook изначально разработал его для решения сетевых проблем, которые в первую очередь возникали на мобильных устройствах - с целью сделать передачу данных как можно более эффективной. При этом позволяя разработчикам быстро выполнять итерацию. Вот почему мы думаем, что у GraphQL есть огромный потенциал в области разработки мобильных приложений! Мы очень рады видеть больше мобильных разработчиков, использующих GraphQL, и хотим создать экосистему, которая максимально упростит интеграцию GraphQL в свои приложения для каждого нативного разработчика.