====== LU03b - Web-Kommunikation mit Node.js (GET & POST) ======
===== 1. Einleitung: Der Zusammenhang von GET und POST =====
Bevor wir uns mit dem Quellcode befassen, ist es wichtig, den Kommunikationsfluss im Internet zu verstehen. Dieser Austausch folgt dem Client-Server-Modell.
{{:de:modul:m307:learningunits:lu03:client-server-modell.png?400|Ein Server bedient verschiedene Clients}}
**Stellen Sie sich diesen Prozess wie einen Briefwechsel vor:**
* **Der Request (Anfrage):** Sie (der Client) senden einen Brief an den Server. Auf dem Umschlag steht, ob Sie nur Informationen erhalten möchten (**GET**) oder ob Sie ein Paket zur Verarbeitung mitschicken (**POST**).
* **Die Verarbeitung:** Der Node.js-Server nimmt Ihren Brief entgegen, liest die Absicht aus und entscheidet, welche Logik ausgeführt werden muss.
* **Die Response (Antwort):** Der Server sendet Ihnen eine Rückmeldung (Antwort), die das Ergebnis Ihrer Anfrage sowie einen Statuscode enthält.
===== 2. Theorie: Die HTTP-Methoden im Detail =====
In der Webentwicklung nutzen wir das **HTTP-Protokoll**. Die Wahl der Methode definiert die Semantik (den Sinn) Ihrer Anfrage.
==== GET: Informationen abrufen ====
Die GET-Methode dient dazu, Daten vom Server anzufragen, ohne diese zu verändern.
* **Datenübertragung:** Parameter werden offen an die URL angehängt (z. B. suche?artikel=laptop).
* **Sichtbarkeit:** Da die Daten in der Adresszeile stehen, sind sie für jedermann sichtbar und werden im Browserverlauf gespeichert.
* **Einsatzgebiet:** Anzeigen von Webseiten, Suchanfragen, Abrufen von Profilbildern.
==== POST: Daten übermitteln ====
Die POST-Methode wird verwendet, um Daten zur Verarbeitung an den Server zu senden.
* **Datenübertragung:** Die Informationen befinden sich im sogenannten **Body** (Körper) der Anfrage. Sie sind nicht in der URL sichtbar.
* **Sicherheit:** POST ist sicherer für sensible Daten wie Passwörter, da diese nicht in Logs oder im Verlauf auftauchen.
* **Einsatzgebiet:** Benutzerregistrierungen, Login-Formulare, Hochladen von Dateien.
===== 3. Der Node.js Server und seine Komponenten =====
Ein Node.js-Server ist die Laufzeitumgebung, die Ihre JavaScript-Logik auf der Serverseite ausführt. Er besteht aus folgenden Kernkomponenten:
* **Die V8-Engine:** Sie sorgt für die schnelle Ausführung Ihres Codes.
* **Der Event-Loop:** Diese Komponente ermöglicht es dem Server, viele Anfragen gleichzeitig zu bearbeiten, ohne bei langsamen Aufgaben (wie Datenbankabfragen) zu blockieren.
* **Routing:** Dies ist der Wegweiser Ihres Servers. Er entscheidet: "Wenn eine GET-Anfrage an /kontakt kommt, sende die Kontaktseite zurück."
* **Middleware:** Dies sind Hilfsfunktionen, die die Anfrage vor der eigentlichen Logik untersuchen (z. B. um zu prüfen, ob die mitgeschickten Daten im JSON-Format vorliegen).
----
[[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Volkan Demir