GraphQL mit Node.js und Express: Ein umfassender Leitfaden

Erstelle leistungsstarke APIs mit GraphQL, Node.js & Express. Umfassender Guide: Setup, Implementierung & Optimierung. Ideal für effiziente, skalierbare APIs.

Leo Schulz

Leo Schulz

5 June 2025

GraphQL mit Node.js und Express: Ein umfassender Leitfaden

Sind Sie bereit, die Art und Weise, wie Sie APIs erstellen, zu revolutionieren? Wenn Sie schon eine Weile in der Entwicklungswelt tätig sind, haben Sie wahrscheinlich schon von GraphQL, Node.js und Express gehört. Zusammen bilden diese Technologien ein leistungsstarkes Toolkit für den Aufbau moderner, effizienter APIs. Heute tauchen wir tief in die Welt von GraphQL mit Node.js und Express ein, um Ihnen zu helfen, diese Kombination in Ihren Projekten zu verstehen und zu implementieren.

Aber zuerst möchte ich Ihnen ein Tool vorstellen, das Ihre API-Entwicklung noch reibungsloser macht: Apidog. Apidog ist ein kostenloses API-Test- und -Verwaltungstool, das sich nahtlos in GraphQL, Node.js und Express integriert. Wenn Sie Ihren API-Entwicklungsprozess optimieren möchten, laden Sie Apidog kostenlos herunter und sehen Sie den Unterschied!

Einführung in GraphQL, Node.js und Express

Was ist GraphQL?

GraphQL ist eine Abfragesprache für Ihre API und eine serverseitige Laufzeitumgebung für die Ausführung von Abfragen unter Verwendung eines Typsystems, das Sie für Ihre Daten definieren. Entwickelt von Facebook, bietet es eine effizientere, leistungsstärkere und flexiblere Alternative zu REST. Mit GraphQL können Sie genau die Daten anfordern, die Sie benötigen, und so das Über- oder Unterabrufen von Daten vermeiden.

GRaphQL Official Website

Was ist Node.js?

Node.js ist eine JavaScript-Laufzeitumgebung, die auf der V8-JavaScript-Engine von Chrome basiert. Sie ermöglicht es Entwicklern, skalierbare Netzwerkanwendungen mit JavaScript auf der Serverseite zu erstellen. Node.js ist bekannt für sein ereignisgesteuertes, nicht blockierendes I/O-Modell, das es leicht und effizient macht.

NodeJs official website

Was ist Express?

Express ist ein minimales und flexibles Node.js-Webanwendungs-Framework, das eine robuste Reihe von Funktionen zur Entwicklung von Web- und mobilen Anwendungen bietet. Es erleichtert die schnelle Entwicklung von Node-basierten Webanwendungen und wird häufig als Rückgrat für den Aufbau von RESTful-APIs verwendet.

Express official Website

Einrichten Ihrer Entwicklungsumgebung

Bevor wir mit dem Erstellen unserer API beginnen, richten wir unsere Entwicklungsumgebung ein. Folgendes benötigen Sie:

Installieren von Node.js und npm

Laden Sie Node.js von der offiziellen Node.js-Website herunter und installieren Sie es. npm wird mit Node.js gebündelt, sodass Sie es nicht separat installieren müssen.

Initialisieren eines neuen Node.js-Projekts

Öffnen Sie Ihr Terminal und erstellen Sie ein neues Verzeichnis für Ihr Projekt. Navigieren Sie in Ihr Projektverzeichnis und führen Sie den folgenden Befehl aus, um ein neues Node.js-Projekt zu initialisieren:

npm init -y

Dieser Befehl erstellt eine package.json-Datei in Ihrem Projektverzeichnis.

Erstellen eines einfachen Express-Servers

Nachdem unser Projekt eingerichtet ist, erstellen wir einen einfachen Express-Server.

Installieren von Express

Führen Sie den folgenden Befehl aus, um Express zu installieren:

npm install express

Erstellen des Servers

Erstellen Sie eine neue Datei mit dem Namen server.js und fügen Sie den folgenden Code hinzu:

const express = require('express');
const app = express();
const PORT = process.env.PORT || 4000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Dieser Code richtet einen einfachen Express-Server ein, der auf Port 4000 lauscht und mit "Hello World!" antwortet, wenn er unter der Stamm-URL aufgerufen wird.

Um den Server zu starten, führen Sie Folgendes aus:

node server.js

Besuchen Sie http://localhost:4000 in Ihrem Browser, um die Nachricht "Hello World!" anzuzeigen.

Integrieren von GraphQL mit Express

Wenn unser einfacher Server läuft, ist es an der Zeit, GraphQL zu integrieren.

Installieren von GraphQL und Apollo Server

Apollo Server ist ein von der Community verwalteter Open-Source-GraphQL-Server, der mit jedem GraphQL-Client kompatibel ist. Wir verwenden ihn, um unsere GraphQL-Anforderungen zu bearbeiten.

Installieren Sie Apollo Server und GraphQL:

npm install apollo-server-express graphql

Einrichten von Apollo Server

Ändern Sie server.js, um Apollo Server mit Express einzurichten:

const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const app = express();
const PORT = process.env.PORT || 4000;

// Define the schema
const typeDefs = gql`
  type Query {
    hello: String
  }
`;

// Define the resolvers
const resolvers = {
  Query: {
    hello: () => 'Hello World!',
  },
};

// Create an instance of ApolloServer
const server = new ApolloServer({ typeDefs, resolvers });

// Apply middleware to connect ApolloServer with Express
server.applyMiddleware({ app });

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}${server.graphqlPath}`);
});

Dieser Code richtet einen einfachen Apollo Server mit einer einzelnen hello-Abfrage ein, die "Hello World!" zurückgibt.

Definieren von GraphQL-Schemas und Resolvers

Nachdem wir nun einen einfachen GraphQL-Server am Laufen haben, wollen wir uns eingehender mit Schemas und Resolvers befassen.

Was ist ein Schema?

Ein GraphQL-Schema definiert die Typen und Beziehungen in Ihrer API. Es beschreibt, welche Abfragen gestellt werden können und welche Daten abgerufen werden können.

Was sind Resolvers?

Resolver sind Funktionen, die das Abrufen der Daten für ein bestimmtes Feld in Ihrem Schema verarbeiten. Sie sagen GraphQL, wie die Daten für jede Abfrage abgerufen werden sollen.

Definieren komplexerer Schemas

Erweitern Sie Ihre typeDefs und resolvers in server.js:

const typeDefs = gql`
  type Book {
    title: String
    author: String
  }

  type Query {
    books: [Book]
  }
`;

const books = [
  {
    title: 'The Awakening',
    author: 'Kate Chopin',
  },
  {
    title: 'City of Glass',
    author: 'Paul Auster',
  },
];

const resolvers = {
  Query: {
    books: () => books,
  },
};

Dieses Schema definiert einen Book-Typ und eine books-Abfrage, die eine Liste von Büchern zurückgibt.

Verbinden mit einer Datenbank

Für eine reale Anwendung müssen Sie Ihre API mit einer Datenbank verbinden. Nehmen wir MongoDB für dieses Beispiel.

Einrichten von MongoDB

Melden Sie sich für ein kostenloses MongoDB Atlas-Konto an oder richten Sie eine lokale MongoDB-Instanz ein. Installieren Sie dann mongoose, um von Node.js aus mit MongoDB zu interagieren:

npm install mongoose

Verbinden mit MongoDB

Ändern Sie server.js, um eine Verbindung zu MongoDB herzustellen:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/graphql', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', () => {
  console.log('Connected to MongoDB');
});

// Define a Mongoose schema and model
const bookSchema = new mongoose.Schema({
  title: String,
  author: String,
});

const Book = mongoose.model('Book', bookSchema);

// Modify the resolver to fetch data from MongoDB
const resolvers = {
  Query: {
    books: async () => await Book.find(),
  },
};

Jetzt ruft die books-Abfrage Daten von MongoDB ab.

Optimieren Ihrer GraphQL-API

Um sicherzustellen, dass Ihre GraphQL-API effizient und leistungsfähig ist, sollten Sie die folgenden Optimierungstechniken in Betracht ziehen:

DataLoader für effizientes Batch-Laden

DataLoader ist ein Dienstprogramm zum Batch- und Caching von Datenabrufen. Es hilft, die Anzahl der Datenbankanforderungen zu reduzieren.

Installieren Sie DataLoader:

npm install dataloader

Verwenden Sie DataLoader in Ihren Resolvers:

const DataLoader = require('dataloader');

const bookLoader = new DataLoader(async (keys) => {
  const books = await Book.find({ _id: { $in: keys } });
  return keys.map((key) => books.find((book) => book.id === key));
});

const resolvers = {
  Query: {
    books: async () => await bookLoader.loadAll(),
  },
};

Caching

Implementieren Sie Caching-Strategien, um redundantes Datenabrufen zu vermeiden. Sie können In-Memory-Caches wie Redis verwenden, um häufig angeforderte Daten zu speichern.

Paginierung

Implementieren Sie für Abfragen, die große Datensätze zurückgeben, die Paginierung, um Daten in Chunks abzurufen. Verwenden Sie die Parameter limit und skip, um Ergebnisse zu paginieren.

Testen Ihrer API mit Apidog

Das Testen Ihrer API ist entscheidend, um sicherzustellen, dass sie wie erwartet funktioniert. Apidog vereinfacht diesen Prozess mit seiner intuitiven Benutzeroberfläche und leistungsstarken Funktionen.

button

Schritt 1: Öffnen Sie Apidog und erstellen Sie eine neue Anfrage.

Apidog

Schritt 2: Suchen Sie die API-Details für die POST-Anfrage, die Sie erstellen möchten, oder geben Sie sie manuell ein.

Apidog

Schritt 3: Füllen Sie die erforderlichen Parameter und alle Daten aus, die Sie in den Anfragetext aufnehmen möchten.

Apidog

Durch die Integration von Apidog in Ihren Workflow können Sie Zeit sparen und häufige Fallstricke in der API-Entwicklung vermeiden. Außerdem ist der Download und die Nutzung kostenlos!

Apidog mit Ihrem GraphQL

Sobald Sie Apidog installiert haben, können Sie Ihr GraphQL-Schema importieren, um Ihre API effizienter zu verwalten und zu testen. Navigieren Sie zum Importabschnitt in Apidog und laden Sie Ihre schema.graphqls-Datei hoch.

create a new GraphQL request

Geben Sie Ihre Abfrage in das Feld "Query" auf der Registerkarte "Run" ein. Sie können auch auf die Schaltfläche "Fetch Schema" im Eingabefeld klicken, um die Funktion "Code-Vervollständigung" für Abfrageausdrücke zu aktivieren und so die Eingabe von Abfrageanweisungen zu unterstützen.

Requesting GraphQL

Mit Ihrem importierten Schema können Sie Apidog verwenden, um Ihre Abfragen und Mutationen zu testen, Dokumentationen zu generieren und sogar Antworten zu simulieren. Dies hilft Ihnen sicherzustellen, dass Ihre API wie erwartet funktioniert, und bietet einen umfassenden Leitfaden für Ihre API-Benutzer.

Requesting GraphQL

Verwenden Sie die automatisierten Testfunktionen von Apidog, um Ihre Testfälle nach einem Zeitplan auszuführen. Dies hilft, Probleme frühzeitig zu erkennen und stellt sicher, dass Ihre API zuverlässig bleibt.

Best Practices für den Aufbau von APIs

Der Aufbau robuster und skalierbarer APIs erfordert die Einhaltung von Best Practices. Hier sind einige wichtige Tipps:

Verwenden Sie beschreibende Fehlermeldungen

Stellen Sie sicher, dass Ihre API aussagekräftige Fehlermeldungen zurückgibt, damit Clients verstehen, was schief gelaufen ist.

Sichern Sie Ihre API

Implementieren Sie Authentifizierungs- und Autorisierungsmechanismen, um Ihre API vor unbefugtem Zugriff zu schützen.

Dokumentieren Sie Ihre API

Stellen Sie eine klare und umfassende Dokumentation für Ihre API bereit. Tools wie Swagger und GraphQL Playground können bei der Erstellung interaktiver Dokumentationen helfen.

Überwachen Sie die Leistung

Verwenden Sie Überwachungstools, um die Leistung Ihrer API zu verfolgen. Identifizieren und beheben Sie Leistungsengpässe umgehend.

Organisieren Sie Ihre Codebasis

Befolgen Sie eine konsistente Codestruktur und Namenskonventionen, um Ihre Codebasis sauber und wartbar zu halten.

Fazit

Herzlichen Glückwunsch! Sie haben gelernt, wie Sie eine leistungsstarke GraphQL-API mit Node.js und Express erstellen. Wir haben alles behandelt, von der Einrichtung Ihrer Entwicklungsumgebung über die Definition von Schemas und Resolvers bis hin zur Verbindung mit einer Datenbank, der Optimierung Ihrer API und dem Testen mit Apidog.

Denken Sie daran, dass der Aufbau großartiger APIs ein fortlaufender Prozess ist. Verfeinern Sie kontinuierlich Ihre Fähigkeiten, bleiben Sie über die neuesten Entwicklungen im GraphQL-Ökosystem auf dem Laufenden und experimentieren Sie weiter mit neuen Tools und Techniken.

button

Explore more

So verwenden Sie Deepseek R1 lokal mit Cursor

So verwenden Sie Deepseek R1 lokal mit Cursor

Erfahre, wie du DeepSeek R1 lokal mit Cursor IDE einrichtest & konfigurierst – privates, kostengünstiges KI-Coding.

4 June 2025

Wie man Gemma 3n auf Android ausführt?

Wie man Gemma 3n auf Android ausführt?

Erfahre, wie du Gemma 3n auf Android installierst und ausführst, mit Google AI Edge Gallery.

3 June 2025

So verwenden Sie den Google Search Console MCP-Server

So verwenden Sie den Google Search Console MCP-Server

Google Search Console & Apidog: SEO-Analyse & KI-API-Entwicklung. Installation, Konfiguration & Nutzung für Web-Performance & API-Einblicke.

30 May 2025

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen