Zurück zu den Analysen
Build-Protokolle6 Min. Lesezeit

Erstellen Ihrer ersten Node.js REST-API: Ein vollständiger Leitfaden für Anfänger

Erfahren Sie, wie Sie mit Node.js und Restify einen funktionsfähigen REST-API-Server erstellen – von der Installation bis zur Verarbeitung von GET- und POST-Anfragen mit praxisnahen Beispielen.

Toby 29. März 2026

Einleitung: Warum Node.js für die Backend-Entwicklung?

Wenn du das Scheduler-Node-Server-Projekt verfolgt hast, weißt du bereits, dass Node.js eine unglaublich leistungsstarke Plattform für die Entwicklung serverseitiger Anwendungen ist. Aber wenn du gerade erst anfängst, fragst du dich vielleicht: Warum Node.js? Warum nicht bei herkömmlichen serverseitigen Sprachen bleiben?

Die Antwort liegt in Node.js' ereignisgesteuertem, nicht blockierendem I/O-Modell, das es unglaublich effizient macht, wenn es um die Verarbeitung gleichzeitiger Verbindungen geht – perfekt für moderne Webanwendungen, die Echtzeitdaten, APIs und Microservices verarbeiten müssen.

In diesem Tutorial führen wir dich durch die Erstellung deines allerersten REST-API-Servers mit Node.js und dem Restify-Framework. Am Ende wirst du einen funktionierenden Server haben, der POST-Anfragen annehmen, Daten speichern und sie über GET-Anfragen wieder bereitstellen kann.

Schritt 1: Node.js und NPM installieren

Bevor wir Code schreiben, müssen wir unsere Entwicklungsumgebung einrichten. Der Prozess ist unkompliziert:

Auf macOS (Empfohlene Methode)

Wenn du einen Mac verwendest, empfehle ich dir dringend die Nutzung von Homebrew – es ist der einfachste Weg, Node.js-Installationen zu verwalten:

brew install node

Dieser eine Befehl installiert sowohl Node.js als auch NPM (Node Package Manager), die wir für die Installation von Frameworks und Paketen benötigen.

Überprüfung

Überprüfe nach der Installation, ob alles funktioniert:

node --version
npm --version

Du solltest die Versionsnummern für beide sehen, was bestätigt, dass die Installation erfolgreich war.

Schritt 2: Die Wahl des Frameworks verstehen

Node.js bringt integrierte HTTP-Server-Funktionen mit, aber das Schreiben von reinem HTTP-Server-Code kann schnell kompliziert werden. Hier kommen Frameworks wie Restify und Express ins Spiel.

Restify vs. Express: Was ist der Unterschied?

  • Express ist ein voll ausgestattetes Web-Framework, das alles vom Routing bis zum Templating abdeckt und sich daher ideal für den Aufbau kompletter Webanwendungen eignet.
  • Restify ist ein schlankeres Framework, das speziell für die Erstellung von RESTful-APIs entwickelt wurde. Es konzentriert sich auf das Wesentliche: Endpunkte, HTTP-Methoden und JSON-Verarbeitung.

Für unser Scheduler-Projekt verwenden wir Restify, da wir einen sauberen API-Endpunkt ohne den Overhead eines vollständigen Webservers benötigen.

Schritt 3: Deinen ersten Server erstellen

Beginnen wir mit einem einfachen „Hello World"-Server mit Restify:

var restify = require('restify');

var server = restify.createServer({
    name: 'scheduler-api'
});

server.get('/test', function(req, res, next) {
    res.send('Test endpoint working!');
    next();
});

html
});

Speichere dies als index.js und führe es mit node index.js aus. Besuche dann http://localhost:8080/test in deinem Browser – du solltest deine Nachricht sehen!

Schritt 4: GET vs POST verstehen

Bevor wir uns mit POST-Anfragen befassen, klären wir den Unterschied zwischen HTTP-Methoden:

GET-Anfragen

GET wird verwendet, um Daten vom Server abzurufen. Du sendest eine URL (optional mit Query-Parametern), und der Server antwortet mit Daten. Das haben wir gerade mit unserem /test-Endpunkt gemacht.

POST-Anfragen

POST wird verwendet, um Daten an den Server zu senden. Statt nur Daten anzufordern, sendest du eine Nutzlast, die der Server verarbeiten, speichern oder auf die er reagieren kann. Dies ist wesentlich für unseren Scheduler, der Zeitplaneinträge von Clients entgegennehmen muss.

Schritt 5: Einen POST-Endpunkt erstellen

Fügen wir nun unserem Server einen POST-Endpunkt hinzu:

server.post('/upload/test', function(req, res, next) {
    console.log('Received POST request');
    console.log('Body:', req.body);
    res.send(200, { status: 'ok' });
    next();
});

Beachte einige wichtige Dinge:

  • Der erste Parameter ist der Endpunktpfad: /upload/test
  • Der zweite Parameter ist eine Callback-Funktion, die die Anfrage verarbeitet
  • req enthält die eingehenden Anfragedaten, einschließlich des Bodys
  • res wird verwendet, um Antworten an den Client zurückzusenden
  • next() ist wichtig für die Middleware-Verkettung in Restify

Schritt 6: Deinen POST-Endpunkt testen

Du kannst POST-Anfragen nicht wie GET-Anfragen in deinem Browser testen – du benötigst einen geeigneten HTTP-Client. Ich empfehle Advanced REST Client, eine Chrome-Erweiterung, die das Testen von APIs einfach und intuitiv macht.

Deine Anfrage einrichten

  1. Setze die Methode auf POST
  2. Gib deine URL ein: http://localhost:8080/upload/test
  3. Setze Content-Type auf application/json
  4. Füge deine JSON-Nutzlast in den Body ein

Wichtig: JSON-Syntax ist entscheidend!

Wenn du JSON-Nutzlasten manuell erstellst, denke daran, dass JSON doppelte Anführungszeichen für Strings erfordert, keine einfachen:

{"test": "This is valid JSON"}

Nicht so:

{'test': 'This will cause errors'}

Verwende Tools wie JSONLint, um dein JSON vor dem Senden von Anfragen zu validieren.

Schritt 7: Anfragedaten lesen und speichern

Da wir nun POST-Anfragen empfangen können, wollen wir die Daten tatsächlich speichern.

Für dieses Tutorial verwenden wir In-Memory-Speicherung (die zurückgesetzt wird, wenn der Server neu startet – im nächsten Tutorial behandeln wir persistente Speicherung mit MongoDB).

// Declare a variable to store our data
var testData = [];

server.post('/upload/test', function(req, res, next) {
    // Extract the 'test' field from the request body
    var scheduleItem = req.body.test;
    
    // Add it to our array
    testData.push(scheduleItem);
    
    console.log('Stored item:', scheduleItem);
    console.log('Total items:', testData.length);
    
    res.send(200, { status: 'ok', message: 'Item stored successfully' });
    next();
});

Schritt 8: Gespeicherte Daten abrufen

Wir haben Daten gespeichert, aber wie rufen wir sie wieder ab? Aktualisieren wir unseren GET-Endpunkt:

server.get('/test', function(req, res, next) {
    // Return the entire array of stored items
    res.send(testData);
    next();
});

Jetzt kannst du:

  1. Mehrere Elemente per POST an /upload/test senden
  2. /test per GET aufrufen, um alle gespeicherten Elemente abzurufen

Häufige Fallstricke und wie du sie vermeidest

1. Das Senden einer Antwort vergessen

Wenn du keine Antwort sendest, bleibt der Client endlos hängen und wartet darauf. Beende deine Request-Handler immer mit res.send().

2. Die next()-Funktion ignorieren

Rufe in Restify immer next() am Ende deiner Handler auf, es sei denn, du hast bereits eine Antwort gesendet. Dadurch kann die Middleware die Verarbeitung fortsetzen.

3. Eingaben nicht validieren

Validiere eingehende Daten immer, bevor du sie verarbeitest. In der Produktion solltest du überprüfen, ob erforderliche Felder vorhanden sind und den richtigen Typ haben.

Wie geht es weiter?

In diesem Tutorial haben wir Folgendes behandelt:

  • Installation von Node.js und Einrichtung deiner Umgebung
  • Restify vs. Express verstehen
  • Erstellen von GET- und POST-Endpunkten
  • Testen von APIs mit dem Advanced REST Client
  • Lesen von JSON-Payloads und Speichern von Daten

Aber es gibt eine große Einschränkung: Unsere Daten verschwinden, wenn der Server neu startet. Im nächsten Tutorial integrieren wir MongoDB für persistente Speicherung. MongoDB ist eine NoSQL-Datenbank, die Daten in einem JSON-ähnlichen Format speichert, und stellt damit eine natürliche Wahl für Node.js-Anwendungen dar.

Danach beginnen wir mit der Entwicklung von Client-Anwendungen, die mit unserer Scheduler-API kommunizieren können, und bringen das gesamte System zum Leben.

Abschließende Gedanken

Eine REST-API zu erstellen mag zunächst abschreckend wirken, aber wenn man sie in kleine, überschaubare Schritte zerlegt, ist sie absolut machbar. Du verfügst nun über das nötige Grundlagenwissen, um APIs zu entwickeln, die Daten entgegennehmen, verarbeiten und wieder an Clients ausliefern können.

Denk daran: Der beste Weg zu lernen ist, es einfach zu tun. Ändere den Code, experimentiere mit verschiedenen Endpoints und hab keine Angst, etwas kaputtzumachen – so lernen wir!

In der nächsten Folge tauchen wir in MongoDB ein und lernen, wie wir unsere Daten persistent machen. Bis dahin: Viel Spaß beim Programmieren!