Du erstellst mit dem Modul http von Node einen Webserver, beantwortest Anfragen und lieferst JSON zurück.
Diese Lektion in Kodokon öffnenEin Webserver ist ein Programm, das ununterbrochen läuft und auf Anfragen wartet: Aufforderungen, die ein Client sendet (ein Browser, eine Mobil-App und so weiter). Auf jede Anfrage gibt er eine Antwort zurück. Dieser Dialog folgt dem Protokoll HTTP, der gemeinsamen Sprache des Webs. Node bringt ein einsatzbereites Modul http mit: nichts zu installieren. Ein letzter Begriff: der Port, eine Zahl, die ein bestimmtes Programm auf einem Rechner identifiziert, wie eine Wohnungsnummer in einem Haus. Wir verwenden den Port 3000; localhost bezeichnet schlicht deinen eigenen Rechner.
import http from "node:http";
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain");
res.end("Hello from my server!");
});
server.listen(3000, () => {
console.log("Server at http://localhost:3000");
});Sehen wir es uns im Detail an. http.createServer bekommt eine Funktion, die bei jeder Anfrage aufgerufen wird, mit zwei Parametern: req (die eingehende Anfrage) und res (die entstehende Antwort). res.statusCode = 200 setzt den Statuscode - 200 bedeutet "alles in Ordnung". res.setHeader fügt einen Header hinzu, also eine Metainformation über die Antwort: hier ihr Format, reiner Text. res.end sendet die Antwort und schließt sie ab. Und schließlich lässt server.listen(3000) den Server auf Port 3000 lauschen. Öffne http://localhost:3000 in deinem Browser: Dein Text erscheint. Beachte, dass das Programm die Kontrolle nicht zurückgibt: Es wartet auf Anfragen. Beende es mit Strg+C.
Moderne Server liefern selten reinen Text: Sie stellen APIs bereit, die in JSON antworten, jenem Textformat, das du schon kennst und das jede Sprache versteht. Zwei Anpassungen: Der Header Content-Type wird zu application/json und das JavaScript-Objekt wird mit JSON.stringify in Text umgewandelt. Nutzen wir die Gelegenheit, je nach req.url unterschiedlich zu reagieren, also je nach dem vom Client angefragten Pfad: Das ist die Grundlage des Routings.
import http from "node:http";
const server = http.createServer((req, res) => {
res.setHeader("Content-Type", "application/json");
if (req.url === "/api/message") {
const body = { message: "Hello!", ok: true };
res.statusCode = 200;
res.end(JSON.stringify(body));
return;
}
res.statusCode = 404;
res.end(JSON.stringify({ error: "Not found" }));
});
server.listen(3000, () => {
console.log("http://localhost:3000/api/message");
});Der Statuscode 404 bedeutet "nicht gefunden": Der angefragte Pfad passt zu keiner bekannten Route. Beachte das return nach der ersten Antwort: Es verhindert, dass der Code weiterläuft und eine zweite Antwort sendet, was einen Fehler auslösen würde. Zum Testen öffnest du die Adresse im Browser oder nutzt curl, ein Kommandozeilen-Werkzeug, das HTTP-Anfragen sendet und die Antwort im Terminal anzeigt.
curl http://localhost:3000/api/message