DOCS

Pourquoi GraphQL

Découvrez pourquoi nous recommandons l'intégration via GraphQL plutôt que REST.

Chez Zonos, nous proposons deux types principaux d'API pour l'intégration : GraphQL et REST. Bien que les API REST existent depuis plus longtemps et puissent être plus familières pour beaucoup, nous sommes passés à GraphQL pour permettre plus de flexibilité et une innovation plus rapide. Bien que les deux soient toujours prises en charge, ce guide explique pourquoi GraphQL est non seulement l'avenir de nos intégrations, mais aussi l'avenir des intégrations en général et un outil plus puissant pour répondre à vos besoins aujourd'hui.

Qu'est-ce que GraphQL ? 

GraphQL est une manière alternative de communiquer avec les API, particulièrement adaptée aux structures de données complexes et à la construction d'interfaces par-dessus. Contrairement au traitement des données comme des éléments séparés et autonomes, GraphQL montre comment les éléments de données se connectent et se rapportent les uns aux autres, facilitant la demande et la réception d'informations.

Considérez GraphQL comme un langage de requête qui vous permet de parler à l'API comme si vous parliez directement à la base de données. L'utilisation de GraphQL vous permet de vous rapprocher autant que possible de la base de données, vous laissant choisir les données que vous voulez et comment les obtenir, offrant un avantage de performance considérable.

GraphQL a été créé par Facebook pour résoudre le problème de la mise à l'échelle avec des structures de données complexes. En conséquence de leur adoption réussie, de plus en plus d'entreprises commencent à réaliser les avantages de l'utilisation de GraphQL pour leurs API.

Vous connaissez déjà REST ? GraphQL vous semblera familier.

Les API GraphQL sont plus faciles à utiliser que vous ne le pensez. Si vous êtes habitué aux API REST, voici comment les concepts fondamentaux de REST se traduisent en GraphQL.

FonctionnalitéRESTGraphQL
Point de terminaisonLes requêtes sont adressées à plusieurs points de terminaison pour différentes actionsToutes les requêtes sont adressées à un seul point de terminaison (par ex., /graphql)
Récupération de donnéesUtilisez les méthodes GET sur des points de terminaison spécifiques pour récupérer des donnéesUtilisez des requêtes pour demander exactement les données nécessaires, réduisant l'over-fetching ou l'under-fetching
Modification/actionsUtilisez des méthodes HTTP comme POST, PUT, PATCH ou DELETE pour modifier ou traiter des donnéesUtilisez des mutations pour effectuer des opérations (par ex., créer des parties, calculer des landed costs)
Format de réponseFormats de réponse fixes renvoyant tous les champs prédéfinis, qu'ils soient nécessaires ou nonRéponses flexibles permettant de spécifier exactement les champs à inclure, réduisant le transfert de données inutile (Si cette flexibilité semble compliquée, utilisez simplement les exemples de requêtes pré-écrits dans notre documentation pour une expérience proche de REST)
Connexion de donnéesPlusieurs requêtes sont souvent nécessaires pour récupérer des données liéesLes requêtes imbriquées permettent de récupérer des données liées en une seule requête (par ex., détails de partie et articles d'envoi ensemble). Les utilisateurs peuvent également construire des flux de travail pour gérer plusieurs mutations dans une seule requête GraphQL, réduisant la complexité et améliorant l'efficacité

Avantages de GraphQL

Une analogie 

Imaginez que vous êtes dans un restaurant avec un menu qui vous permet de commander des plats exactement comme vous les souhaitez, comparé à un autre restaurant où vous ne pouvez choisir qu'entre des menus fixes. GraphQL est comme le premier restaurant :

  • Obtenez exactement ce que vous voulez : Avec GraphQL, vous pouvez demander exactement les données dont vous avez besoin, ni plus, ni moins. Imaginez que vous voulez seulement le nom et le prix d'un plat, pas toute la liste des ingrédients. Avec les API REST, vous devez obtenir tous les détails du plat et ignorer les parties dont vous n'avez pas besoin.
  • Composez un plat personnalisé : Notre API GraphQL peut être facilement combinée pour créer des solutions plus personnalisées, similaire à un restaurant buffet où vous pouvez créer un plat unique exactement comme vous en avez besoin, en utilisant les ingrédients qu'ils ont déjà. En revanche, une API REST est comme une boulangerie avec des produits préfabriqués emballés en paniers — vous ne pouvez commander que ce qui a déjà été créé et vous ne pouvez pas choisir de repartir seulement avec la pièce que vous voulez.
  • Moins d'attente : Puisque vous pouvez obtenir toutes les informations dont vous avez besoin en une seule requête, c'est comme demander à votre serveur d'apporter votre entrée, plat principal et dessert en même temps, plutôt que d'attendre entre les services. La plupart des API REST nécessitent d'envoyer plusieurs requêtes pour obtenir différentes informations.
  • Facile de modifier les commandes : Si les besoins en données de votre application changent, GraphQL facilite l'ajustement. Vous changez simplement la requête pour ce dont vous avez besoin. Avec REST, vous pourriez devoir attendre que la cuisine (backend) crée un nouveau plat (point de terminaison) pour le menu, ce qui prend plus de temps.

GraphQL offre plus de flexibilité, d'efficacité et de simplicité pour récupérer des données que les API REST, surtout lorsque vos besoins changent ou grandissent.

Comment Zonos utilise GraphQL 

Lors de la modernisation de notre plateforme au cours des dernières années, Zonos a choisi de construire de nouvelles fonctionnalités en utilisant GraphQL pour notre API au lieu de REST. Nous avons pris cette décision parce que nos données sont complexes et interconnectées, un peu comme les données qui ont conduit Facebook à créer GraphQL. Cette complexité rend difficile la construction d'API REST évolutives, car les façons dont les développeurs doivent récupérer et utiliser les données varient considérablement entre les implémentations, et REST n'est pas flexible.

GraphQL résout élégamment ce problème en permettant aux développeurs implémentant notre API de choisir exactement les données qu'ils veulent et comment les obtenir. Cela leur permet de l'intégrer dans leurs flux de travail sans que Zonos ait besoin de faire du travail personnalisé (pendant qu'ils attendent) pour chaque situation.

Le résultat combiné de l'utilisation de GraphQL et des modernisations de notre plateforme a rendu notre API plus performante, a accéléré l'intégration de Zonos dans vos systèmes et a permis à Zonos de livrer de nouvelles fonctionnalités plus rapidement.

Meilleures fonctionnalités

Zonos développe continuellement de nouvelles fonctionnalités, et GraphQL est le premier (et généralement le seul) à recevoir ces mises à jour. En revanche, nos API REST sont considérées comme en fin de vie et ne peuvent pas accéder à nombre de nos nouvelles fonctionnalités.

Exemples de fonctionnalités limitées à GraphQL :

  • Inclusive pricing
  • Labels API
  • Nouveau Checkout et Hello
  • Tailles de colis dans la réponse API
  • Rapports Dashboard
  • Capacité de demander un devis DDP si possible, mais de renvoyer quand même un devis DDU si le DDP n'est pas disponible pour ce pays avec ce niveau de service
  • Ventilation détaillée des droits, taxes et frais (informations au niveau article, frais spécifiques) — Dashboard est alimenté par GraphQL et affiche ces données pour toutes les boutiques, mais la réponse de l'API REST n'inclut pas ce niveau de détail
  • Mode test (bientôt disponible)

Cette page a-t-elle été utile?