JavaScript Server Node.js
Willemers Informatik-Ecke
Umgang mit den Anfrage- und Antwortparametern POST-Formular und Auswertung

Neben dynamischen Ausgaben an den Client werden viele Daten auch aus statischen Dateien ausgeliefert. Unterstützung liefert das Modul fs, das genauso per require eingebunden wird wie http.

Die Methode fs.readFile erhält als Parameter den Pfad zu der Datei und eine Callback-Funktion, die asynchron abläuft. Der Callback-Funktion werden in ihren zwei Parametern error und data entweder die Fehlersituation oder im Erfolgsfall der Dateninhalt der Datei übergeben.

const http = require("http"); // Einbinden von http
const fs = require("fs"); // Einbinden von fs
// ...
        fs.readFile("index.htm", function(error, data) {
            if (data) {
                response.writeHead(200);
                response.end(data.toString());
            } else { // error
                response.writeHead(500);
                response.end(error.toString());
            }
        });
Es ist zu berücksichtigen, dass readFile asynchron läuft. Node wartet also nicht, bis die Datei fertig gelesen ist, sondern läuft weiter. Darum muss die Antwort an den Client innerhalb der Callback-Funktion von readFile erfolgen.

Unterscheidung der URL und Lesen der Dateien

Um eine Datei zu senden, muss sie vom Client angefordert werden. Der hinterlässt seinen Wunsch typischerweise in der URL. Das folgende Beispielprogramm liefert die Datei index.htm, wenn der Client localhost:8080/index als URL angibt.
const http = require("http"); // Einbinden von http
const fs = require("fs"); // Einbinden von fs

var server = http.createServer(function(request, response) {
    if (request.url === "/index") {
        fs.readFile("index.htm", function(error, data) {
            if (data) {
                response.setHeader('Content-Type', 'text/html');
                response.writeHead(200);
                response.end(data.toString());
            } else { // error
                response.writeHead(500);
                response.write(error.toString());
                response.end("\nDateifehler");
            }
        });
    } else {
        response.writeHead(404);
        response.end("Nichts da");
    }
});
server.listen(8080, "localhost", function () {
    console.log("Server gestartet");
});