Cet article démontre des coutures de schéma sur plusieurs instances de faune, créant une API GraphQL unifiée à partir de sources de données disparates. Nous explorerons également la combinaison de la faune avec d'autres services GraphQL.
Comprendre les coutures de schéma
La couture de schéma est une technique pour construire une seule API GraphQL à partir de plusieurs API GraphQL sous-jacentes.
Pourquoi utiliser des coutures de schéma?
Les applications à grande échelle utilisent souvent des microservices pour la modularité. Cependant, les applications client ont fréquemment besoin de données provenant de plusieurs sources. Une API GraphQL unifiée fournit une interface propre, mais la construction d'un serveur monolithique peut être problématique. GraphQL native de Fauna par base de données est idéal, mais plusieurs bases de données nécessitent une connexion à plusieurs instances, créant un couplage serré. La couture de schéma résout cela en combinant plusieurs services GraphQL en un seul schéma unifié. Cet article couvre:
Consolider plusieurs instances de faune
Combinons plusieurs instances de base de données de faune (par exemple, Product
, Inventory
, Review
) dans un seul service GraphQL. Chaque base de données a sa propre API GraphQL (Sub-Graph). Notre objectif est un graphique unifié pour que les applications client interrogent les données entre toutes les sources.
Ce graphique unifié sera notre service de passerelle. Nous allons construire cela en utilisant Node.js.
Configuration du projet: Créez un projet Node.js:
Mkdir My-Gateway CD My-gateway INITM NPM - Oui
Installez les dépendances:
NPM I Express Express-GraphQl GraphQL @ GraphQL-Tools / Schema @ GraphQL-Tools / Stitch @ GraphQL-Tools / Wrap Cross-Fetch - Save
Basic GraphQL Server (Gateway.js): Commencez avec un serveur GraphQL express simple:
// Gateway.js (version initiale) // ... (Configuration du serveur express) ...
(Ce code initial serait le serveur Bare-Bones, similaire à l'exemple d'origine, mais omis pour la concision de se concentrer sur les aspects de couture.)
Configuration de la base de données de la faune: créez trois bases de données de faune ( Product
, Inventory
, Review
) et générer des clés d'administration. Définissez les schémas GraphQL pour chaque base de données (comme indiqué dans l'exemple d'origine).
Gateway Service Enhancement (Gateway.js): Implémentez les coutures de schéma à l'aide de @graphql-tools/stitch
. Cette section comprendra les fonctions makeRemoteExecutor
et makeGatewaySchema
comme décrit dans l'original, mais avec une clarté améliorée et potentiellement refactorisée pour une meilleure lisibilité. Les principales améliorations seraient:
Couture API tierces: étendez la passerelle pour inclure des API GraphQL tierces (par exemple, API SpaceX) en utilisant la même approche makeRemoteExecutor
et stitchSchemas
.
Déploiement sur AWS Lambda: utilisez le framework sans serveur pour déployer la passerelle vers une fonction AWS Lambda. Installez les dépendances nécessaires ( serverless
, serverless-http
, body-parser
). Créez un fichier serverless.yaml
(comme indiqué dans l'original). Modifiez gateway.js
pour intégrer avec serverless-http
pour une gestion appropriée de la fonction lambda. Déploiement à l'aide d' serverless deploy
.
Conclusion
Le coutume de schéma offre une solution puissante pour construire des API GraphQL évolutives et maintenables à partir de plusieurs sources de données. Bien que cet article utilise Fauna et AWS Lambda, les principes s'appliquent largement aux autres services GraphQL et plates-formes sans serveur. Des approches alternatives comme la Fédération Apollo offrent des fonctionnalités similaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!