Node.js - Web-Modul

Was ist ein Webserver?

Hallo, angehende Programmierer! Heute tauchen wir in die aufregende Welt der Webserver ein. Stellt euch einen Webserver wie eine freundliche Bibliothekarin vor, die immer bereit ist, euch das Buch (oder in unserem Fall, die Webseite) zu überreichen, das ihr sucht.

Node.js - Web Module

Ein Webserver ist eine Software, die auf Anfragen von Webbrowsern reagiert. Wenn ihr eine URL in euren Browser eingebt, fragt ihr im Wesentlichen einen Webserver, euch eine bestimmte Webseite zu geben. Der Server holt dann diese Seite und sendet sie zurück an euren Browser.

Lassen wir das mit einer einfachen Analogie erklären:

  1. Ihr (der Client) geht in eine Bibliothek (das Internet) hinein.
  2. Ihr fragt die Bibliothekarin (den Webserver) nach einem bestimmten Buch (einer Webseite).
  3. Die Bibliothekarin holt das Buch und gibt es euch.
  4. Ihr lest das Buch (euer Browser zeigt die Webseite an).

Einfach, oder? Nun sehen wir, wie wir eigenen Webserver mit Node.js erstellen können!

Webanwendungsarchitektur

Bevor wir mit dem Programmieren beginnen, verstehen wir die grundlegende Architektur einer Webanwendung. Das ist wie das Verständnis der Baupläne eines Hauses, bevor man es baut.

Eine typische Webanwendung besteht aus drei Hauptkomponenten:

  1. Client: Das ist normalerweise ein Webbrowser (wie Chrome oder Firefox), der Anfragen an den Server sendet.
  2. Server: Dort läuft unsere Node.js-Anwendung. Er empfängt Anfragen von Clients und sendet Antworten zurück.
  3. Datenbank: Dort speichern und abrufen wir Daten. Wir werden Datenbanken in diesem Tutorial nicht behandeln, aber es ist gut zu wissen, dass sie existieren!

Hier ist eine einfache Darstellung, um dies zu veranschaulichen:

[Client] <---> [Server] <---> [Datenbank]

Die Pfeile repräsentieren den Datenfluss zwischen diesen Komponenten. Cool, oder?

Erstellung eines Webservers mit Node

Nuntauchen wir die Hände schmutzig und erstellen einen einfachen Webserver mit Node.js. Macht euch keine Sorgen, wenn ihr noch nie programmiert habt – wir gehen das Schritt für Schritt durch!

Zuerst müssen wir das integrierte http-Modul von Node verwenden. Dieses Modul ermöglicht es uns, einen Server zu erstellen, der HTTP-Anfragen verarbeiten kann.

const http = require('http');

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hallo, Welt!');
});

server.listen(3000, 'localhost', () => {
console.log('Server läuft unter http://localhost:3000/');
});

Lassen wir das auseinandernehmen:

  1. Wir require das http-Modul, das uns die Werkzeuge zum Erstellen eines Servers gibt.
  2. Wir verwenden http.createServer(), um einen neuen Server zu erstellen. Diese Funktion nimmt eine Callback-Funktion, die ausgeführt wird, wenn eine Anfrage an den Server gemacht wird.
  3. In der Callback-Funktion setzen wir den Statuscode auf 200 (was "OK" bedeutet), den Inhaltstyp auf reinen Text und senden "Hallo, Welt!" als Antwort.
  4. Schließlich weisen wir dem Server an, auf Port 3000 auf localhost zu hören.

Um diesen Server zu starten, speichert den Code in einer Datei (nennen wir sie server.js), öffnet euer Terminal, navigiert zum Verzeichnis, das die Datei enthält, und führt aus:

node server.js

Nun, wenn ihr euren Browser öffnet und http://localhost:3000 aufruft, solltet ihr "Hallo, Welt!" sehen. Gratulation, ihr habt gerade euren ersten Webserver erstellt!

Erstellung eines Webclients mit Node

Nun, da wir einen Server haben, erstellen wir einen Client, der Anfragen an ihn senden kann. In der realen Welt wäre das normalerweise ein Webbrowser, aber wir können auch einen einfachen Client mit Node.js erstellen.

Hier ist ein einfacher Client, der eine GET-Anfrage an unseren Server sendet:

const http = require('http');

const options = {
hostname: 'localhost',
port: 3000,
path: '/',
method: 'GET'
};

const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);

res.on('data', (d) => {
process.stdout.write(d);
});
});

req.on('error', (error) => {
console.error(error);
});

req.end();

Lassen wir das auseinandernehmen:

  1. Wir require das http-Modul erneut.
  2. Wir richten die Optionen für unsere Anfrage ein, einschließlich des Hostnamens, der Portnummer, des Pfades und der Methode.
  3. Wir erstellen eine Anfrage mit http.request(), übergeben unsere Optionen und eine Callback-Funktion.
  4. In der Callback-Funktion protokollieren wir den Statuscode und richten einen Ereignislistener für das 'data'- Ereignis ein, das jegliche Daten, die vom Server empfangen werden, protokolliert.
  5. Wir richten auch einen Fehlerhandler ein.
  6. Schließlich rufen wir req.end() auf, um die Anfrage zu senden.

Speichert dies in einer Datei namens client.js und führt aus mit node client.js. Ihr solltet den Statuscode (200) und die Nachricht vom Server ("Hallo, Welt!") in eurem Terminal sehen.

Schlussfolgerung

Gratulation! Ihr habt gerade euren ersten Webserver und Client mit Node.js erstellt. Das ist nur die Spitze des Eisbergs, aber ein toller Anfang. Während ihr eure Reise im Web-Entwicklungsgebiet fortsetzt, werdet ihr lernen, wie man verschiedene Arten von Anfragen behandelt, HTML-Seiten bereitstellt, mit Datenbanken arbeitet und vieles mehr.

Denkt daran, jeder Experte war einmal ein Anfänger. Übt weiter, lernt weiter und vor allem, habt Spaß! Die Welt der Web-Entwicklung ist riesig und aufregend, und ihr habt gerade die ersten Schritte hinein getan. Frohes Coden!

Methode Beschreibung
http.createServer() Erstellt einen neuen HTTP-Server
server.listen() Startet den Server und lässt ihn auf eingehende Anfragen lauschen
http.request() Sendet eine HTTP-Anfrage an einen Server
res.statusCode Setzt den HTTP-Statuscode der Antwort
res.setHeader() Setzt einen Antwortheader
res.end() Sendet eine Antwort an den Client
req.on() Richtet einen Ereignislistener für die Anfrage ein

Credits: Image by storyset