Erstellen Sie einen HTTP-Webserver in Node.js mit Code Beispiel
⚡ Intelligente Zusammenfassung
Node.js erstellt mit dem integrierten http-Modul in wenigen Zeilen einen funktionierenden Webserver. Der Server lauscht an einem ausgewählten Port und beantwortet jede Anfrage mit einem Statuscode und einem Antworttext, während separater Code Daten von anderen Websites abruft.

Das Node.js Das Framework wird hauptsächlich zur Erstellung serverbasierter Anwendungen verwendet. Es eignet sich hervorragend zum Aufbau von Webservern, die Nutzern Inhalte bereitstellen.
Mehrere Module bearbeiten serverbezogene Anfragen, die integrierten http Das wichtigste Modul dabei ist Node.js. Wir werden uns ansehen, wie man eine einfache Webserver-Anwendung mit Node.js erstellt und anschließend, wie man Daten von einer anderen Website anfordert.
Knoten als Webserver mit HTTP
Schauen wir uns ein Beispiel an, wie man eine erste Node.js-Anwendung erstellt und ausführt.
Die Anwendung erstellt ein einfaches Servermodul, das auf Port 7000 lauscht. Wenn über den Browser eine Anfrage an diesen Port gestellt wird, sendet der Server eine Hallo Welt Antwort an den Kunden.
Code Erläuterung
- Das
requireFunktion liest ein JavaSkript Die Datei wird ausgeführt und ihr Exportobjekt zurückgegeben. Hier wird diehttpModul, sodass seine Funktionalität in der Anwendung verfügbar ist. - Eine Serveranwendung wird aus einer einfachen Funktion erstellt. Diese Funktion wird jedes Mal ausgeführt, wenn eine Anfrage den Server erreicht.
- Wenn eine Anfrage eingeht, wird die Antwort mit dem Status „…“ gesendet. 200Dies ist der Standardstatuscode in einem HTTP-Header für eine erfolgreiche Antwort.
- Der Antworttext selbst ist die Zeichenkette Hallo Welt.
server.listenDie Anwendung lauscht auf Port 7000 nach Clientanfragen. Es kann jeder verfügbare Port verwendet werden.
Wenn der Befehl erfolgreich ausgeführt wird, erscheint die folgende Ausgabe im Browser.
Ausgang
Aus der Ausgabe:
- Aufruf des lokalen Hosts URL Auf Port 7000 wird die Zeichenkette angezeigt Hallo Welt auf der Seite.
- Da der Code Port 7000 angibt, ist die Ausgabe nur sichtbar, wenn man diesen Port ansteuert.
Hier ist der Code als Referenz:
var http = require('http'); var server = http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello World\n"); }); server.listen(7000);
Umgang mit GET-Anfragen in Node.js
Das Senden einer GET-Anfrage zum Abrufen von Daten von einer anderen Website ist in Node.js unkompliziert. Früher benötigte man dafür Folgendes: request Modul, installiert über die Kommandozeile:
npm install request
Dieser Befehl weist den Node-Paketmanager an, das benötigte Modul herunterzuladen und zu installieren. Nach erfolgreicher Installation zeigt die Befehlszeile den Namen und die Version des installierten Moduls in folgender Form an: <name>@<version>.
Im obigen Screenshot ist die request Das Modul und seine Versionsnummer wurden heruntergeladen und installiert.
Code Erläuterung
- Das
requestDas im vorherigen Schritt installierte Modul stellt die Funktionen bereit, die zum Senden von GET-Anfragen an Websites benötigt werden. - Es wird eine GET-Anfrage an eine Website gesendet, und eine Callback-Funktion wird ausgeführt, sobald eine Antwort eintrifft. Die Callback-Funktion erhält drei Parameter:
- Fehler — protokolliert alle Fehler, die während der Anfrage aufgetreten sind.
- Antwort — enthält die mit der Antwort zurückgegebenen HTTP-Header.
- Korpus — enthält den gesamten Inhalt der Antwort.
- Der empfangene Inhalt
bodyDer Parameter wird in die Konsole geschrieben.
Hier ist der Code als Referenz:
var request = require("request"); request("https://example.com", function(error, response, body) { // Always check the error parameter before using the body if (error) { console.error("Request failed:", error.message); return; } console.log(body); });
⚠️ Hinweis zur Einstellung: die request Modul war Vollständig veraltet seit Februar 2020 und erhält keine weiteren Updates. Es lässt sich weiterhin installieren und ausführen, daher bleibt das obige Beispiel für bestehende Projekte gültig, aber npm install request Gibt nun eine Warnung wegen veralteter Funktionen aus. Neuer Code sollte die integrierte Funktion verwenden. fetch Die Funktion wird im nächsten Abschnitt gezeigt.
Wie man HTTP-Anfragen mit dem nativen Fetch-Befehl in Node.js durchführt
Node hat eine globale fetch Diese Funktion ist seit Version 18 verfügbar und entspricht der von Browsern bereits bereitgestellten API. Es ist keine Paketinstallation erforderlich, und die Funktion gibt ein Promise zurück, sodass sie direkt mit Browsern funktioniert. async/await.
// No require and no npm install needed on Node 18 or later async function getData() { try { const response = await fetch("https://example.com"); // fetch does NOT reject on 404 or 500 — check ok yourself if (!response.ok) { throw new Error("HTTP status " + response.status); } const body = await response.text(); console.log(body); } catch (err) { // Network failures and the throw above both land here console.error("Request failed:", err.message); } } getData();
Drei Unterschiede zum Callback-Stil sind erwähnenswert. Erstens, fetch Ablehnungen erfolgen nur bei Netzwerkfehlern; ein HTTP 404- oder 500-Fehler wird weiterhin erfolgreich aufgelöst, weshalb response.ok Es gibt diese Überprüfung, und warum das Weglassen dieser Überprüfung der häufigste Fehler beim Wechsel von requestZweitens wird der Textkörper nicht mit der Antwort übermittelt – er muss explizit gelesen werden. response.text() für Klartext oder response.json() für JSON, und jede dieser Methoden gibt ein eigenes Promise zurück. Drittens, da der gesamte Aufruf auf Promises basiert, wird ein einzelnes try/catch Umfasst sowohl die Anfrage als auch den gelesenen Body und ersetzt den error-first-Callback-Parameter vollständig.
Für Skripte, die auf Node 16 oder älter ausgeführt werden müssen, installieren Sie node-fetch or axios stattdessen, da beide eine vergleichbare Promise-basierte Schnittstelle bereitstellen und nach dem Upgrade der Laufzeitumgebung lediglich eine Änderung der Importzeile erfordern.
request vs fetch vs axios: Welches ist das richtige?
In den meisten Node-Dokumentationen werden drei HTTP-Clients erwähnt, von denen jedoch nur einer als sinnvolle Standardeinstellung für neue Projekte dient. Sie unterscheiden sich im Wartungsstatus, in der Notwendigkeit von Abhängigkeiten und in der Art der Fehlersignalisierung. Die folgende Tabelle vergleicht sie daher miteinander.
| Aspekt | Anforderung | fetch (eingebaut) | Axios |
|---|---|---|---|
| Status | Veraltet seit 2020 | Im Kern beibehalten | Aktiv gepflegt |
| Installation | npm-Paket | Keine Einträge auf Knoten 18+ | npm-Paket |
| Design | Fehler-zuerst-Callback | Versprechen | Versprechen |
| JSON-Analyse | Manuelle oder JSON-Option | Manuelle Methode über response.json() | automatische |
| Fehler 404 oder 500 | Nein | Nein | Ja |
Arbeiten jederzeit weiterbearbeiten können. Jede Präsentation und jeder KI-Avatar, den Sie von Grund auf neu erstellen oder hochladen, fetch Für neue Projekte mit einer aktuellen Node-Version, da keine zusätzlichen Abhängigkeiten entstehen und die Browser-API den Entwicklern bereits bekannt ist. Wählen Sie axios Wenn die automatische JSON-Verarbeitung, Request-Interceptors oder die Ablehnung von Fehlerstatus echten Code einsparen würden. Beibehalten request nur innerhalb von Legacy-Anwendungen, die bereits davon abhängig sind und die es ersetzen sollen.
Häufige Node.js-Serverfehler und wie man sie behebt
Die meisten Fehler beim Starten eines ersten Node-Servers sind auf Ports, Pfade oder eine fehlende Antwort zurückzuführen und nicht auf den Servercode selbst.
- EADDRINUSE: Ein anderer Prozess belegt bereits den Port.
netstat -ano | findstr :7000on Windowsdenlsof -i :7000on macOS und Linux, dann beenden Sie diesen Prozess oder wählen Sie einen anderen Port. - EACCES an einem niedrigen Port: Für Ports unter 1024 sind erhöhte Berechtigungen erforderlich. Verwenden Sie während der Entwicklung einen Port über 1024, z. B. 3000 oder 7000.
- Der Browser hängt sich auf und lädt nie: Der Handler hat nie angerufen.
response.end()Die Verbindung bleibt so lange offen, bis ein Timeout auftritt, daher muss jeder Pfad durch den Handler die Antwort beenden. - Modul 'http' nicht gefunden: Der Dateiname wurde falsch geschrieben, oder das Skript wird in einem Browser anstatt in Node ausgeführt. Kernmodule müssen nicht installiert werden.
- Änderungen werden nicht angezeigt: Node lädt die Datei einmal beim Start. Starten Sie den Prozess nach jeder Änderung neu oder führen Sie ihn unter einem Watcher wie z. B. aus.
node --watch server.js.




