Dieser Artikel zeigt das Schema -Nähten über mehrere Fauna -Instanzen hinweg und erstellt eine einheitliche GraphQL -API aus unterschiedlichen Datenquellen. Wir werden auch die Kombination von Fauna mit anderen GraphQL -Diensten untersuchen.
Schemasticken verstehen
Das Schema -Nähten ist eine Technik zum Erstellen einer einzelnen GraphQL -API aus mehreren zugrunde liegenden GraphQL -APIs.
Warum Schema -Nähte verwenden?
In großem Maßstab werden häufig Mikrodienste zur Modularität verwendet. Client -Anwendungen benötigen jedoch häufig Daten aus mehreren Quellen. Eine einheitliche GraphQL -API bietet eine saubere Schnittstelle, aber das Erstellen eines monolithischen Servers kann problematisch sein. Die native GraphQL von Fauna pro Datenbank ist ideal, aber mehrere Datenbanken erfordern eine Verbindung zu mehreren Instanzen, wodurch eine enge Kopplung erstellt wird. Das Schema -Nähen löst dies durch Kombination mehrerer GraphQL -Dienste in ein einzelnes einheitliches Schema. Dieser Artikel deckt:
Konsolidierung mehrerer Fauna -Instanzen
Kombinieren wir mehrere Fauna -Datenbankinstanzen (z. B. Product
, Inventory
, Review
) in einen einzelnen GraphQL -Dienst. Jede Datenbank hat eine eigene GraphQL -API (Subgraph). Unser Ziel ist ein einheitliches Diagramm für Clientanwendungen, um Daten in allen Quellen abzufragen.
Diese einheitliche Grafik wird unser Gateway -Service sein. Wir werden dies mit node.js.
Projekt -Setup: Erstellen Sie ein Node.js -Projekt:
Mkdir My-Gateway CD My-Gateway npm init -yes
Abhängigkeiten installieren:
NPM I Express-Graphql Graphql @Graphql-Tools/Schema @Graphql-tools/stitch @Graphql-tools/Wrap Cross-Fetch-Save
Basic GraphQL Server (Gateway.js): Beginnen Sie mit einem einfachen Express -GraphQL -Server:
// Gateway.js (erste Version) // ... (Express -Server -Setup) ...
(Dieser anfängliche Code wäre der Bare-Bones-Server, ähnlich wie das ursprüngliche Beispiel, aber es ist für die Kürze weggelassen, sich auf die Stichaspekte zu konzentrieren.)
Fauna -Datenbank -Setup: Erstellen Sie drei Fauna -Datenbanken ( Product
, Inventory
, Review
) und generieren Sie Administratorschlüssel. Definieren Sie GraphQL -Schemas für jede Datenbank (wie im ursprünglichen Beispiel gezeigt).
Gateway Service Enhancement (Gateway.js): Implementieren Sie das Schema-Nähten mit @graphql-tools/stitch
. Dieser Abschnitt umfasst den makeRemoteExecutor
und makeGatewaySchema
-Funktionen, wie im Original beschrieben, jedoch mit einer verbesserten Klarheit und potenziell umgestaltet für eine bessere Lesbarkeit. Wichtige Verbesserungen wären:
APIs von Drittanbietern nachdenken: Erweitern stitchSchemas
das Gateway, makeRemoteExecutor
die GraphQL-APIs von Drittanbietern (z.
Bereitstellung für AWS Lambda: Verwenden Sie das serverlose Framework, um das Gateway für eine AWS -Lambda -Funktion bereitzustellen. Installieren Sie die erforderlichen Abhängigkeiten ( serverless
, serverless-http
, body-parser
). Erstellen Sie eine serverless.yaml
-Datei (wie im Original gezeigt). Ändern Sie gateway.js
, um in serverless-http
für die ordnungsgemäße Handhabung der Lambda-Funktion zu integrieren. Bereitstellung mit serverless deploy
.
Abschluss
Das Schema -Nähten bietet eine leistungsstarke Lösung für den Aufbau skalierbarer und wartbarer GraphQL -APIs aus mehreren Datenquellen. Während dieser Artikel Fauna und AWS Lambda verwendet, gelten die Prinzipien im Großen und Ganzen für andere GraphQL -Dienste und serverlose Plattformen. Alternative Ansätze wie Apollo Federation bieten ähnliche Funktionen.
Das obige ist der detaillierte Inhalt vonImplementierung eines einzelnen GraphQL über mehrere Datenquellen hinweg. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!