Запросы и мутации GraphQL на разных версиях Parse
По мере развития Parse некоторые его аспекты меняются для повышения производительности, улучшения совместимости и упрощения разработки.
Одним из таких аспектов является поддержка GraphQL, которая со временем эволюционировала от Parse 3.5.0 до последней доступной версии, 3.9.
Здесь, в Back4app, у нас есть три основные версии, которые реализуют изменения в запросах и мутациях GraphQL, а именно: 3.7.2, 3.8 и 3.9, и сегодня я проведу вас через различия между этими версиями, показывая, что изменилось, а что нет.
Contents
Введение
Эволюция обязательна при развертывании долгосрочных решений для клиентов, и Parse не является исключением.
По мере того как стандарты GraphQL становились все более популярными и используемыми, сообщество требовало лучшей интеграции, упрощения использования и интуитивности. Компания Back4app, являясь сопровождающим и активным участником проекта Parse, услышала эти голоса и приложила много усилий для достижения таких результатов в платформе Parse с открытым исходным кодом.
Со временем наши разработчики добавили новые функции, такие как интеграция с Cloud Code, но сообщество продолжало просить о более последовательном синтаксисе GraphQL для фреймворков и платформ, и в Parse 3.9 мы достигли этого и предоставили его сообществу для использования.
В процессе развития этого синтаксиса было внесено несколько ключевых изменений, поэтому в зависимости от версии Parse, которую вы используете, вы должны выбрать правильный синтаксис для нее: 3.7.2, 3.8 и 3.9 имеют немного разный синтаксис для достижения одних и тех же результатов.
По этой причине я пишу эту статью, чтобы вы могли получить всю информацию в одном месте, и пока я это делаю, я настоятельно рекомендую пользователям обновить свой Parse до версии 3.9 вместе с новым синтаксисом, нашей самой кроссплатформенной/кроссфреймворк совместимой с синтаксисом версией на данный момент.
Ниже я покажу вам несколько примеров.
Здоровье API
Запрос здоровья API не изменился в разных версиях, и вы можете последовательно вызывать его запросом:
что приведет к одинаковому ответу для всех версий:
Создание объекта
Мутация для создания объекта была изменена с течением времени, чтобы быть более согласованной между различными GraphQL-фреймворками, и включает в себя изменения, которые следует учитывать перед изменением версии Pare.
Использование общей мутации
В Parse 3.7.2 вы могли просто запросить создание объекта, и класс автоматически создавался для вас:
В Parse 3.8 есть небольшое изменение, поскольку запрос объектов был удален, но вы по-прежнему можете запросить создание объекта, и класс будет создан автоматически:
В Parse 3.9, однако, вы должны сначала создать свой класс, явно добавив его поля:
и только после этого вы сможете сохранить объект, используя его специфический метод (см. ниже).
Использование специфического метода (мутация класса)
Специфические методы (методы класса, в данном случае – мутация класса) также изменились:
В Parse 3.7.2 это было так:
В Parse 3.8 свойство objects было удалено:
И, наконец, в Parse 3.9 свойство ObjectId было переименовано в id, чтобы оно соответствовало стандартам:
Получение объекта
Получение объектов также претерпело изменения с течением времени для улучшения согласованности и совместимости.
Использование общего запроса
Вы можете указать имя класса и идентификатор объекта, чтобы получить конкретный объект, используя общий метод GET, который будет работать для любого класса.
Parse 3.7.2:
Позже в Parse 3.8 объекты были удалены, что позволило сделать вызов более простым:
Parse 3.8:
С появлением Parse 3.9 общий метод GET был удален, и для получения объектов необходимо использовать специфический метод класса (подробнее об этом ниже).
Использование специфического метода (Class Query)
Специфические методы также менялись в зависимости от версии Parse.
В Parse 3.7.2 мы имели:
Позже, в Parse 3.8, мы также убрали свойство objects для упрощения вызова:
А в Parse 3.9 свойство objectId было заменено на id для лучшей согласованности между фреймворками:
Поиск объекта
Поиск объектов также претерпел изменения с течением времени для лучшей согласованности и совместимости.
Использование общего запроса
Вы можете указать имя класса, чтобы получить список объектов, используя общий метод FIND, который будет работать для любого класса.
Parse 3.7.2:
Позже в Parse 3.8 объекты были удалены, что позволило упростить вызов:
Parse 3.8:
С появлением Parse 3.9 общий метод FIND был удален, и для получения объектов необходимо использовать метод конкретного класса (подробнее об этом ниже).
Использование специфического метода (Class Query)
Специфические методы также менялись в зависимости от версии Parse.
В Parse 3.7.2 мы имели:
Позже, в Parse 3.8, мы также убрали свойство objects для более удобного вызова:
А в Parse 3.9 свойство objectId было заменено на id для лучшей согласованности между фреймворками:
Обновление объекта
Обновление объектов также должно было измениться для лучшей согласованности и совместимости.
Использование общего запроса
Вы могли указать имя класса и ObjectID, чтобы обновить объект, используя общий метод UPDATE, который работал для любого класса.
Parse 3.7.2:
Позднее в Parse 3.8 объекты были удалены, что позволило упростить вызов:
Parse 3.8:
С появлением Parse 3.9 общий метод UPDATE был удален, и для получения объектов необходимо использовать метод конкретного класса (подробнее об этом ниже).
Использование специфического метода (Class Query)
Специфические методы также менялись в зависимости от версии Parse.
В Parse 3.7.2 мы имели:
Позже, в Parse 3.8, мы также убрали свойство objects для упрощения вызова:
А в Parse 3.9 вызов остался таким же, как и в 3.8, но objectId был переименован в id:
Методы приложений
Методы приложений должны были следовать изменениям и соответствовать новым стандартам. Запросы и мутации, специфичные для приложения, также изменились.
Регистрация пользователя
Регистрация новых пользователей следовала протоколу с течением времени и была соответствующим образом скорректирована:
Parse 3.7.2:
Позже Parse 3.8 сохранил этот вызов:
Parse 3.8:
С появлением Parse 3.9 свойство objectId изменилось на id для соответствия:
Вход в систему пользователя
Вход в систему пользователя изменился аналогичным образом:
Parse 3.7.2:
Позже в Parse 3.8 этот вызов сохранился:
Parse 3.8:
С появлением Parse 3.9 свойство objectId изменилось на id для соответствия:
Получение зарегистрированного пользователя
Получение информации о зарегистрированном пользователе также претерпело изменения. Вы по-прежнему должны передавать заголовок “X-Parse-Session-Token” вместе с действительным токеном сессии для этого пользователя, но сам запрос изменился:
Parse 3.7.2:
Позже в Parse 3.8 запрос ME был переведен в новый формат VIEWER:
Parse 3.8:
С появлением Parse 3.9 свойство objectId изменилось на id для соответствия. Если оно вам не нужно, то синтаксис такой же, как и в 3.8:
Заключение
С развитием Parse вместе с другими платформами и форматами было вполне естественно, что Parse продолжал меняться, чтобы упростить разработку и сохранить согласованность и совместимость.
По мере появления новых стандартов Parse приходилось вносить изменения, чтобы он не отличался от основных компонентов, с которыми он интегрируется.
Как заядлый пользователь Parse, я и сам ожидал, что со временем произойдет еще несколько изменений. Хороших изменений. Изменения, которые имеют смысл и позволяют каждому достичь своих целей.
Мы в Back4app гордимся тем, что помогли этой эволюции, и советуем всем, кто использует GraphQL, обновить Parse до 3.9 вместе с вашими GraphQL-запросами и мутациями. Вы выиграете от гораздо более последовательного языка запросов.
Версия 4.0 находится в печи. Что она принесет?
Какие изменения были внесены в GraphQL за это время?
По ходу дела произошли следующие основные изменения.
-Интеграция облачного кода
-Упрощенное использование
-Интуитивность
-Использование новой технологии
-Последовательный синтаксис
Это были некоторые изменения, которые были сделаны со временем.
Какая была необходимость вносить изменения в Мутацию создания объектов?
Последовательность была основным фокусом для внесения изменений в этом. Теперь вам нужно сначала создать класс в Parse 3.9, а затем создать объекты. Поэтому в этом обновлении мы стремились к последовательности.
Было ли полезно вносить изменения во многие аспекты?
Да, это было необходимо для внесения изменений. Появлялись новые стандарты, и люди, использующие parse, возлагали большие надежды. Они хотели видеть изменения в сторону улучшения, и Parse сделал то же самое. Он будет продолжать обновляться, чтобы стать хорошей версией и в будущем.