Maison > interface Web > tutoriel CSS > Implémentation d'un seul GraphQL sur plusieurs sources de données

Implémentation d'un seul GraphQL sur plusieurs sources de données

Joseph Gordon-Levitt
Libérer: 2025-03-20 09:43:13
original
686 Les gens l'ont consulté

Implémentation d'un seul GraphQL sur plusieurs sources de données

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:

  1. Intégrer plusieurs instances de faune dans un seul service GraphQL.
  2. Combinant la faune avec d'autres API GraphQL et sources de données.
  3. Création d'une passerelle GraphQL sans serveur à l'aide d'AWS Lambda.

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.

  1. Configuration du projet: Créez un projet Node.js:

     Mkdir My-Gateway
    CD My-gateway
    INITM NPM - Oui
    Copier après la connexion
  2. Installez les dépendances:

     NPM I Express Express-GraphQl GraphQL @ GraphQL-Tools / Schema @ GraphQL-Tools / Stitch @ GraphQL-Tools / Wrap Cross-Fetch - Save
    Copier après la connexion
  3. Basic GraphQL Server (Gateway.js): Commencez avec un serveur GraphQL express simple:

     // Gateway.js (version initiale)
    // ... (Configuration du serveur express) ...
    Copier après la connexion

    (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.)

  4. 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).

  5. 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:

    • Commentaires plus clairs expliquant le but de chaque fonction.
    • Gestion des erreurs pour les appels API.
    • Configuration des touches API via des variables d'environnement au lieu de codage rigide.
  6. 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 .

  7. 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal