API Gateway für Mikroservices in JavaScript: Vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum Ihr Projekt ein API Gateway auf JavaScript braucht?

\n\n

Stellen Sie sich vor, Ihr Backend ist ein riesiges Einkaufszentrum. Darin befinden sich Dutzende von Geschäften (Mikroservices): eines verkauft Bücher, ein anderes Kleidung, ein drittes Elektronik. Jedes Geschäft hat seinen eigenen Eingang, seine eigenen Regeln und seine eigene Sprache. Und jetzt stellen Sie sich vor, ein Besucher (die Client-Anwendung) müsste alle diese Eingänge abklappern, um ein einziges T-Shirt zu kaufen. Chaos, oder?

\n\n

In der Welt der Webentwicklung löst API Gateway dieses Problem – ein zentraler Einstiegspunkt für alle Mikroservices. Es fungiert wie der Verwalter des Einkaufszentrums: Es leitet Anfragen weiter, überprüft Tickets (Token), sammelt Daten aus verschiedenen Geschäften und gibt dem Kunden eine fertige Antwort. Und heute schauen wir uns an, wie man ein solches Gateway in reinem JavaScript mit Node.js schreibt.

\n\n

Dieser Artikel ist sowohl für Anfänger nützlich, die sich gerade erst mit der Mikroservices-Architektur vertraut machen, als auch für erfahrene Entwickler, die funktionierende Codebeispiele sehen möchten. Los geht's!

\n\n

Was ist ein API Gateway und wozu braucht man es?

\n\n

API Gateway ist eine serverseitige Komponente, die als Zwischenschicht zwischen dem Client und den internen Diensten fungiert. Es übernimmt:

\n
    \n
  • Routing – leitet Anfragen an den richtigen Mikroservice weiter.
  • \n
  • Authentifizierung und Autorisierung – prüft, ob der Benutzer Zugriff hat.
  • \n
  • Datenaggregation – sammelt Antworten von mehreren Diensten in einer einzigen.
  • \n
  • Anfragenbegrenzung – schützt das Backend vor Überlastung.
  • \n
  • Protokolltransformation – konvertiert z. B. REST in GraphQL.
  • \n
\n\n

Für JavaScript-Dienste (insbesondere auf Node.js) ist ein API Gateway die natürliche Wahl. Es lässt sich leicht mit Express, Koa oder Fastify schreiben, und vor allem ermöglicht es, einen einheitlichen Codestil im gesamten Projekt beizubehalten.

\n\n

Entwurf der API Gateway-Struktur auf Node.js

\n\n

Bevor wir Code schreiben, legen wir die Architektur fest. Nehmen wir an, wir haben drei Mikroservices:

\n
    \n
  • users-service – Benutzerverwaltung (Port 3001).
  • \n
  • orders-service – Bestellungen (Port 3002).
  • \n
  • products-service – Produktkatalog (Port 3003).
  • \n
\n\n

Der Client (Frontend) greift nur auf das Gateway auf Port 8080 zu. Das Gateway entscheidet selbst, wohin die Anfrage weitergeleitet wird.

\n\n

Schritt 1. Grundlegende Express-Einrichtung

\n\n

Erstellen wir ein neues Projekt und installieren die Abhängigkeiten:

\n
mkdir api-gateway\ncd api-gateway\nnpm init -y\nnpm install express http-proxy-middleware dotenv
\n\n

Jetzt schreiben wir ein einfaches Gateway, das Anfragen an die Dienste weiterleitet:

\n
// gateway.js\nconst express = require('express');\nconst { createProxyMiddleware } = require('http-proxy-middleware');\nrequire('dotenv').config();\n\nconst app = express();\nconst PORT = process.env.PORT || 8080;\n\n// Routen für Mikroservices\napp.use('/users', createProxyMiddleware({\n  target: 'http://localhost:3001',\n  changeOrigin: true,\n}));\n\napp.use('/orders', createProxyMiddleware({\n  target: 'http://localhost:3002',\n  changeOrigin: true,\n}));\n\napp.use('/products', createProxyMiddleware({\n  target: 'http://localhost:3003',\n  changeOrigin: true,\n}));\n\napp.listen(PORT, () => {\n  console.log(`API Gateway läuft auf Port ${PORT}`);\n});
\n\n

Das war's! Jede Anfrage an /users wird nun automatisch an den users-service weitergeleitet. Aber das ist erst der Anfang. Ein echtes Gateway muss mehr können.

\n\n

Authentifizierung und Token-Überprüfung hinzufügen

\n\n

Eine der Hauptaufgaben eines API Gateway ist die zentrale Authentifizierung. Anstatt JWT in jedem Mikroservice zu überprüfen, machen wir das einmal im Gateway.

\n\n

Fügen wir eine Middleware zur Token-Überprüfung hinzu:

\n
// middleware/auth.js\nconst jwt = require('jsonwebtoken');\n\nconst authMiddleware = (req, res, next) =>                

Blogs

Buchempfehlungen