GraphQL JavaScript-Bibliothek (Node.js): graphql-http
GraphQL ist eine von Facebook entwickelte Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten anzufordern, die sie benötigen. Im Node.js-Ökosystem ist graphql-http eine der wichtigsten Bibliotheken zur Implementierung von GraphQL-Servern. Es ist ein leichtgewichtiges, aber leistungsstarkes Werkzeug, mit dem Sie leistungsstarke APIs mit minimalem Overhead erstellen können. Im Gegensatz zu schwereren Lösungen wie Apollo Server bietet graphql-http Flexibilität und volle Kontrolle über die HTTP-Handler.
Was ist graphql-http?
graphql-http ist eine offizielle Bibliothek der GraphQL-Community, die eine einfache Möglichkeit bietet, GraphQL mit jedem HTTP-Server von Node.js zu verbinden. Sie ist unabhängig von einem bestimmten Framework (Express, Koa, Fastify usw.), was sie zu einer universellen Wahl macht. Die Hauptaufgabe der Bibliothek besteht darin, eine eingehende HTTP-Anfrage zu analysieren, die GraphQL-Abfrage auszuführen und eine strukturierte Antwort zurückzugeben.
Installation und Einrichtung
Installieren Sie die Bibliothek zunächst über npm:
npm install graphql-http graphqlMinimales Serverbeispiel mit reinem Node.js (ohne Express):
const http = require('http');const { createHandler } = require('graphql-http');const { buildSchema } = require('graphql');
// Schema definierenconst schema = buildSchema(` type Query { hello: String user(id: Int!): User } type User { id: Int name: String email: String }`);
// Resolverconst rootValue = { hello: () => 'Hallo, Welt!', user: ({ id }) => ({ id, name: `Benutzer ${id}`, email: `user${id}@example.com` })};
// Handler erstellenconst handler = createHandler({ schema, rootValue });
// HTTP-Serverconst server = http.createServer((req, res) => { if (req.url === '/graphql') { handler(req, res); } else { res.writeHead(404); res.end('Not Found'); }});
server.listen(4000, () => { console.log('Server gestartet unter http://localhost:4000/graphql');});Integration mit Express
Die meisten Entwickler verwenden Express. Die Integration von graphql-http mit Express ist trivial:
const express = require('express');const { createHandler } = require('graphql-http');const { buildSchema } = require('graphql');
const schema = buildSchema(` type Query { books: [Book] } type Book { title: String author: String }`);
const books = [ { title: 'Krieg und Frieden', author: 'Leo Tolstoi' }, { title: 'Verbrechen und Strafe', author: 'Fjodor Dostojewski' }];
const rootValue = { books: () => books};
const app = express();
app.all('/graphql', createHandler({ schema, rootValue }));
app.listen(3000, () => { console.log('Express + GraphQL unter http://localhost:3000/graphql');});Hauptfunktionen und Vorteile
- Routing-Flexibilität: Sie entscheiden selbst, an welchem Endpunkt GraphQL verfügbar ist.
- Unterstützung aller HTTP-Methoden: GET- und POST-Anfragen werden korrekt verarbeitet.
- Integrierte Validierung: Die Bibliothek prüft automatisch, ob Anfragen dem Schema entsprechen.
- Leistung: Minimaler Speicherverbrauch und hohe Verarbeitungsgeschwindigkeit.
- Erweiterbarkeit: Middleware für Authentifizierung, Protokollierung und Caching kann hinzugefügt werden.
Arbeit mit Mutationen und Subscriptions
Neben Abfragen (Query) unterstützt graphql-http auch Mutationen (Mutation) zum Ändern von Daten. Beispiel eines Schemas mit einer Mutation:
const schema = buildSchema(` type Query { message: String } type Mutation { setMessage(newMessage: String!): String }`);
let message = 'Alt Auch in der Bibliothek
Integration von Prometheus-Metriken in Kotlin-Anwendungen: Vollständige Anleitung
TypeBox für TypeScript: Komplettguide mit Praxisbeispielen
Arbeit mit CSV in C++: Bibliotheken, Parsing und Datenschreiben
Elasticsearch-Client für C# (.NET): NEST und Elastic.Clients.Elasticsearch