Installation von node.js | Umgang mit den Anfrage- und Antwortparametern |
Durch die Einbindung des HTTP-Moduls kann ein HTTP-Server erstellt werden.
const http = require("http"); // Einbinden von http var server = http.createServer(requestCallback);Ein http-Server wird erzeugt und in der Variablen server abgelegt. Für Aktivitäten des Servers wird die Funktion requestCallback übergeben. Der Server wird sie aufrufen, sobald ein Client den Server aktiviert. Da sie erst bei einem späteren Ereignis aktiv wird, nennt man eine solche Funktion Callback-Funktion. Sie wird weiter unten näher beschrieben.
Nachdem der Server erzeugt ist, wird er mit dem Aufruf von listen gestartet und mit einem festgelegten Port und einem Netzwerkadapter verbunden. Als dritter Parameter wird wieder eine Funktion aufgerufen, die bei Start des Servers aktiv wird.
const http = require("http"); // Einbinden von http var server = http.createServer(requestCallback); server.listen(8080, "localhost", listener);Das Programm wird daraufhin blockieren. Der Port wird hier mit 8080 festgelegt und als Netzwerkadapter einfach localhost verwendet. Bei einem Gerät mit mehreren Netzwerkanschlüssen kann hier dafür gesorgt werden, dass der Server nur über eine Schnittstelle erreichbar ist.
Callback-Funktion für createServer
Die Callback-Funktion für createServer muss zwei Parameter aufweisen.- Der erste Parameter enthält die Details zu der Anfrage des Clients und wird darum üblicherweise request oder auch kurz req genannt.
- Der zweite Parameter enthält die Antwort des Servers und wird durch die Callback-Funktion gefüllt.
function requestCallback(request, response) { // In den Response-Kanal wird geschrieben response.write("Hallo Welt"); // Der Response-Kanal wird abgeschlossen response.end(); }Im ersten Versuch werden die Daten des Clients nicht näher untersucht und damit bleibt der Parameter request ungenutzt. Als response wird eine Zeichenkette (Hallo Welt) per write in die Variable response geschrieben. Hier könnte beliebiger HTML-Code stehen. Mit dem Aufruf von end wird die Ausgabe abgeschlossen.
Callback-Funktion für listen
Die Funktion listener wird bei Start des Servers mit listen aufgerufen. Hier kann eine Meldung auf dem Bildschirm ausgegeben werden.function listener() { console.log("Server gestartet"); }
Anonyme Funktionen
Da die Callback-Funktionen nicht nur an einer Stelle aufgerufen werden, kann sie auch direkt im Parameter definiert werden.server.listen(8080, "localhost", listener); function listener() { console.log("Server gestartet"); }Die Funktion wird direkt bei Aufruf implementiert.
server.listen(8080, "localhost", function () { console.log("Server gestartet"); } );Da die Funktion nur hier verwendet wird, kann auf den Namen verzichtet werden.
Auf die gleiche Art und Weise wird auch createServer mit seiner Callback-Funktion vereint.
var server = http.createServer(function(request, response) { response.write("Hallo Welt"); response.end(); });Wer damit angeben will, dass er den Begriff Lambda schon einmal gehört hat, kann den sogenannten Fat-Arrow verwenden, der lediglich verschleiert, dass es sich um eine Funktion handelt. Dazu wird das Schlüsselwort function entfernt und hinter der Parameterklammer ein Gleichheitszeichen und ein Größerzeichen kombiniert.
var server = http.createServer(function(request, response) { // Syntaktische Variante einer anonymen Funktion var server = http.createServer((request, response) => {Das Gesamtkunstwerk sieht (ohne syntaktischen Zucker) so aus:
const http = require("http"); // Einbinden von http var server = http.createServer(function(request, response) { response.write("Hallo Welt"); response.end(); }); server.listen(8080, "localhost", function() { console.log("Server gestartet"); });
Start und Test des HTTP-Servers
Mit dem Aufruf über node wird der Server gestartet. Er blockiert dabei die Terminalsitzung, da ein Server dauernd läuft.node httpserver.jsNun läuft der Server im Hintergrund und wartet auf Anfragen über den Port 8080. Um das zu testen, wird ein Browser gestartet und als Adresse localhost:8080 eingegeben. Es sollte "Hallo Welt" auf dem Browser erscheinen.