GraphQL Joins permet aux développeurs de joindre les données de deux services GraphQL différents pour créer une API GraphQL unifiée sans avoir à écrire de code personnalisé ni à modifier les API sous-jacentes. Il vous permet de récupérer rapidement des données à partir de bases de données et d’autres services GraphQL comme s’il s’agissait d’un schéma pour mélanger et faire correspondre facilement vos sources de données.
Pour créer une jointure, vous devez définir la relation entre les deux ensembles de données que vous souhaitez unifier. Les jointures sont généralement basées sur une clé partagée entre les deux objets, comme un ID ou un nom. Une fois la relation établie, la requête renvoie les deux ensembles de données, ce qui nous permet de poser des questions complexes et de recevoir une mine d’informations en une seule réponse.
Ce qui suit est un cas d’utilisation simple pour créer une API unifiée avec Hasura GraphQL Joins en moins de cinq minutes.
Cet exemple utilise deux API GraphQL distantes, une API de pays et une API météo. Notre objectif est de trouver une liste de pays, puis de connecter la météo pour les capitales. Les deux API sont des points de terminaison GraphQL distants différents que nous devons connecter. Commençons!
Dans le tableau de bord de l’API Hasura, nous avons déjà interrogé les pays dans la section Explorer à gauche. (Pour savoir comment ajouter un schéma distant, rendez-vous ici.)
Accédez au tableau de bord Remote Schemas pour connecter les pays et les API météo qui sont des points GraphQL. Nous commençons par ajouter une API GraphQL existante en tant que schéma distant. Pour notre cas d’utilisation, nous ajoutons une API GraphQL tierce contenant des informations sur les pays.
Nous appellerons cette API « Pays ».
Ensuite, nous ajouterons un point de terminaison météo. Vous pouvez lui donner le nom que vous voulez, mais nous choisirons « Météo » pour notre cas d’utilisation. Entrez l’URL du serveur GraphQL et cliquez sur « Ajouter ». Si vous avez besoin d’en-têtes d’autorisation pour passer, ajoutez-les dans le champ « En-têtes supplémentaires ».
Le schéma Weather Remote apparaîtra sous le schéma Pays.
Afin d’éviter des définitions conflictuelles pour « Langue » dans les champs Pays et Météo, vous devez ajouter une personnalisation. Cliquez sur « Pays » puis allez sur « Modifier ». Cliquez sur le bouton Ajouter sous « Personnalisations GraphQL ». Dans l’espace de noms du champ racine, entrez « countries_graph » et ajoutez « Pays » dans le champ Préfixe, puis appuyez sur Enregistrer.
Revenez maintenant au tableau de bord de l’API et vous verrez les espaces de noms « countries_graph », « getCityby » et « getCityByName » dans la zone Explorer. Cliquez sur « pays_graphique » dans le menu déroulant, sélectionnez « continent », sélectionnez « code » et entrez « NA » pour l’Amérique du Nord. Ensuite, sous « pays », sélectionnez « capitale » pour les récupérer.
Pour récupérer la météo de chaque capitale, revenez au tableau de bord des schémas distants et sélectionnez « Relations » pour le point de terminaison Pays. Les relations de jointure GraphQL vous permettent d’effectuer des requêtes d’objets imbriqués si les tables/vues de votre base de données sont connectées ou liées dans les API distantes.
Ici, nous allons créer une API qui nous permet de récupérer la météo pour toutes les capitales de pays d’un continent qui cartographiera une relation entre un pays et le schéma météorologique.
Ensuite, cliquez sur « Ajouter une nouvelle relation » et donnez-lui un nom. Nous utiliserons « GetCapitalWeather ». Ensuite, sous Source Remote Schema, sélectionnez « Country » et pour Reference Remote Schema, sélectionnez « Weather ».
Ensuite, cliquez sur « Query » et « getCityByName » dans la section Mapping du menu déroulant. Sélectionnez « nom », « Champ source », puis « Majuscule » dans le menu déroulant À partir du champ. Cela mappera le paramètre de nom à la capitale provenant du point de terminaison « Pays ».
Maintenant, revenez au tableau de bord de l’API et cliquez sur « countries_graph » dans la zone Explorer. Dans le menu déroulant, cliquez sur « code » et tapez « NA » pour récupérer le code de l’Amérique du Nord.
Ensuite, faites défiler vers le bas jusqu’à ce que vous atteigniez la relation « GetCapitalWeather » que nous venons d’ajouter. Sélectionnez les paramètres météorologiques souhaités, tels que la température réelle, minimale ou maximale.
Appuyez ensuite sur le bouton de lecture pour exécuter la requête afin d’obtenir la capitale et la météo du pays.
C’est ça. Vous pouvez désormais créer vos propres API unifiées via Hasura GraphQL Joins et connecter facilement différents points de terminaison GraphQL distants avec une simple interface utilisateur et sans écrire de code fastidieux.
Pour plus d’informations sur les jointures GraphQL avec Hasura, consultez les liens de ressources ci-dessous.