DOCS

Почему GraphQL

Почему GraphQL

Узнайте, почему мы рекомендуем интеграцию через GraphQL вместо REST.

В Zonos мы предлагаем два основных типа API для интеграции: GraphQL и REST. Хотя REST API существуют дольше и могут быть более знакомыми для многих, мы перешли на GraphQL, чтобы обеспечить большую гибкость и более быстрое внедрение инноваций. Хотя оба типа все еще поддерживаются, этот гид объясняет, почему GraphQL не только будущее наших интеграций, но и будущее интеграций в целом, а также более мощный инструмент для удовлетворения ваших потребностей сегодня.

Что такое GraphQL? 

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

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

GraphQL был создан Facebook для решения проблемы масштабирования с сложными структурами данных. В результате их успешного внедрения все больше компаний начали осознавать преимущества использования GraphQL для своих API.

Ключевые отличия от REST

API GraphQL проще в использовании, чем вы можете подумать. Если вы привыкли работать с REST API, вот основные отличия, которые стоит учитывать:

ФункцияRESTGraphQL
Конечная точкаЗапросы отправляются на несколько конечных точек для различных действийВсе запросы отправляются на одну конечную точку (например, /graphql)
Извлечение данныхИспользуйте GET методы на конкретных конечных точках для извлечения данныхИспользуйте запросы для запроса именно тех данных, которые нужны, уменьшая избыточное или недостаточное извлечение
Модификация данных/действияИспользуйте HTTP методы такие как POST, PUT, PATCH или DELETE для изменения или обработки данных.Используйте мутации для выполнения операций (например, создание сторон, расчет стоимости доставки)
Формат ответаФиксированные форматы ответа возвращают все предопределенные поля, независимо от того, нужны ли ониГибкие ответы позволяют точно указывать, какие поля включать, уменьшая ненужную передачу данных
Связь данныхЧасто требуется несколько запросов для извлечения связанных данныхВложенные запросы позволяют извлекать связанные данные в одном запросе (например, детали сторон и товары отправления вместе). Пользователи также могут создавать рабочие процессы для управления несколькими мутациями в одном запросе GraphQL, уменьшая сложность и повышая эффективность

Преимущества GraphQL

Быстрые ответы

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

Точное извлечение данных

Распространенной проблемой с REST является избыточное или недостаточное извлечение данных — либо получение слишком большого количества ненужной информации, либо недостаточно нужной информации за один раз. GraphQL устраняет это, позволяя запрашивать именно то, что нужно — ничего больше, ничего меньше. Эта специфичность не только улучшает производительность, но и упрощает процесс для тех, кто взаимодействует с API, делая систему более эффективной и удобной для пользователя.

Примеры того, как это полезно:

  • Это позволяет разработчикам фронтенда извлекать именно те данные, которые им нужны для их UI-компонентов, уменьшая количество обращений к серверу и улучшая производительность.
  • Представьте, что вы хотите получить классификацию HS-кода, упаковку, оценку отправления и предложение по landed cost на товары в checkout. Если вы интегрированы через API GraphQL, вы можете сделать один вызов с необходимыми рабочими процессами, чтобы получить все, что вам нужно (и ничего лишнего) в одном ответе. В отличие от этого, с REST API вам сначала нужно было бы вызвать Classify REST API, затем отдельно вызвать Rating REST API, и, наконец, вставить эту классификацию и оценку отправления в ваш третий вызов к Landed Cost REST API. Все эти REST API вернут каждую часть информации, которую они могут, заставляя вас просматривать ответ для поиска нужных данных. Эта экономия времени имеет значение для быстрого возврата полного landed cost, прежде чем покупатель уйдет.

Одна конечная точка

API GraphQL обычно имеют одну конечную точку, в отличие от REST API, которые часто имеют несколько конечных точек для различных ресурсов и действий. Это упрощает управление и понимание API.

Пакетирование и кэширование

Способность GraphQL пакетировать запросы и поддержка стратегий кэширования приводят к значительным улучшениям производительности. Эти функции уменьшают нагрузку на сети и серверы, что приводит к более быстрым и надежным взаимодействиям для пользователей.

Четко определенные схемы

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

Возможность улучшения без нарушения работы существующих клиентов

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

Актуальная документация

Благодаря функции интроспекции GraphQL документация автоматически генерируется и обновляется с каждым изменением. Это гарантирует, что вся информация, предоставляемая разработчикам, актуальна, что снижает количество проблем с интеграцией и запросов в службу поддержки, связанных с устаревшей документацией — проблемой, с которой часто сталкиваются с документацией REST API.

Просмотрите нашу документацию по GraphQL и нашу документацию по REST, чтобы увидеть разницу.

Аналогия 

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

  • Получите именно то, что хотите: С помощью GraphQL вы можете запрашивать именно те данные, которые вам нужны, ни больше, ни меньше. Представьте, что вы хотите только название и цену блюда, а не весь список ингредиентов. С REST API вам нужно получить все детали блюда и игнорировать те части, которые вам не нужны.
  • Составьте индивидуальное блюдо: Наши GraphQL API можно легко комбинировать, чтобы создать более индивидуальные решения, подобно ресторану в стиле шведского стола, где вы можете создать уникальное блюдо именно так, как вам нужно, используя уже имеющиеся ингредиенты. В отличие от этого, REST API похож на пекарню с готовыми изделиями, упакованными в корзины — вы можете заказывать только то, что уже было создано, и не можете выбрать, чтобы забрать домой только ту часть, которая вам нужна.
  • Меньше ожидания: Поскольку вы можете получить всю необходимую информацию за один запрос, это похоже на то, как если бы вы попросили своего официанта принести вам закуску, основное блюдо и десерт сразу, а не ждать между блюдами. Большинство REST API требуют от вас отправки нескольких запросов, чтобы получить разные части информации.
  • Легко изменять заказы: Если ваши потребности в данных приложения изменяются, GraphQL упрощает процесс корректировки. Вам просто нужно изменить запрос на то, что вам нужно. С REST вам, возможно, придется ждать, пока кухня (бэкенд) создаст новое блюдо (конечную точку) для меню, что занимает больше времени.

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

Как Zonos использует GraphQL 

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

GraphQL аккуратно решает эту проблему, позволяя разработчикам, реализующим наш API, выбирать и выбирать именно те данные, которые они хотят, и как они их получают. Это позволяет им интегрировать это в свои рабочие процессы без необходимости Zonos выполнять индивидуальную работу (в то время как они ждут) для каждой ситуации.

Совместный результат использования GraphQL и модернизаций на нашей платформе сделал наш API более производительным, ускорил интеграцию Zonos в ваши системы и позволил Zonos быстрее предоставлять новые функции.

Лучшие функции

Zonos постоянно разрабатывает новые функции, и GraphQL является первым (и обычно единственным), кто получает эти обновления. В отличие от этого, наши REST API считаются устаревшими и не могут получить доступ ко многим нашим новым функциям.

Примеры функций, ограниченных GraphQL:

  • Inclusive pricing
  • API меток
  • Новый Checkout и Hello
  • Размеры коробок в ответе API
  • Отчетность на панели управления
  • Возможность запросить котировку DDP, если это возможно, но все равно вернуть котировку DDU, если DDP недоступен для этой страны с этим уровнем обслуживания
  • Подробный разбор пошлин, налогов и сборов (информация на уровне товара, конкретные сборы) — панель управления работает на GraphQL и показывает эти данные для всех магазинов, но ответ REST API не включает этот уровень детализации
  • Тестовый режим (скоро)

Была ли эта страница полезной?