‫Dozent: In den letzten
‫paar Vorlesungen hoffe ich, dass Sie sich
‫die Grundlagen der Express-Entwicklung angeeignet haben.
‫Jetzt ist also der perfekte Zeitpunkt, um etwas tiefer
‫in die Funktionsweise
‫von Express einzutauchen, und dafür müssen wir
‫über Middleware und den Request-Response-Zyklus sprechen.
‫Die Essenz der Express-Entwicklung besteht also
‫darin, den
‫Anfrage-Antwort-Zyklus zu verstehen und dann zu verwenden.
‫Deshalb möchte ich diese Idee in
‫diesem Video auf visuelle Weise deutlich machen.
‫Um den Anfrage-Antwort-Zyklus zu starten,
‫erhält die Express-App eine Anfrage, wenn jemand einen Server trifft,
‫für den sie dann ein Anfrage-
‫und Antwortobjekt erstellt.
‫Diese Daten werden dann verwendet
‫und verarbeitet, um eine aussagekräftige Antwort zu generieren und zurückzusenden.
‫Um diese Daten zu verarbeiten,
‫verwenden wir in Express eine sogenannte Middleware,
‫die die Anfrage oder das Antwortobjekt manipulieren kann.
‫Oder führen Sie wirklich jeden anderen Code aus, der uns gefällt.
‫Bei Middleware muss es also
‫nicht immer nur um die Anfrage oder
‫das Antwortobjekt gehen, sondern meistens um die Anfrage.
‫Und eigentlich haben wir schon vorher Middleware verwendet.
‫Wir haben Express dot JSON verwendet, um Zugriff auf den Anfragetext des
‫Anfrageobjekts zu erhalten.
‫Erinnere dich daran?
‫Jetzt heißt es Middleware, erinnern
‫Sie sich, weil es eine Funktion ist, die zwischen
‫dem Empfangen der Anfrage und dem Senden
‫der Antwort ausgeführt wird.
‫Und tatsächlich können wir sagen, dass in
‫Express alles Middleware ist.
‫Sogar unsere Routendefinitionen.
‫Auch wenn wir unsere Routen definiert haben,
‫können wir uns die Route-Handler-Funktionen, die wir geschrieben haben,
‫als Middleware-Funktionen vorstellen.
‫Sie sind einfach
‫Middleware-Funktionen, die nur für bestimmte Routen ausgeführt werden.
‫Okay?
‫Einige Beispiele für Middleware sind jetzt Express dot JSON, das
‫auch Body-Parser genannt wird und das
‫wir bereits zuvor verwendet haben.
‫Oder einige Protokollierungsfunktionen
‫oder das Festlegen bestimmter HTTP-Header.
‫Die Möglichkeiten mit Middleware sind wirklich endlos.
‫Alles klar, und jetzt in technischer Hinsicht
‫sagen wir, dass die gesamte Middleware,
‫die wir in
‫unserer App verwenden, als Middleware-Stack bezeichnet wird.
‫Es ist hier sehr wichtig zu beachten, dass
‫die Reihenfolge der Middleware im Stack tatsächlich durch
‫die Reihenfolge definiert wird, in der
‫sie im Code definiert sind.
‫Eine Middleware, die zuerst im Code auftaucht,
‫wird also vor einer später ausgeführten Middleware ausgeführt.
‫Daher spielt die Reihenfolge des Codes in Express eine große Rolle.
‫Okay?
‫Nun können Sie sich den gesamten Prozess so vorstellen,
‫dass unsere Request- und Response-Objekte,
‫die am Anfang
‫erstellt wurden, jede Middleware durchlaufen, wo sie verarbeitet
‫werden oder wo nur anderer Code ausgeführt wird.
‫Am Ende jeder Middleware-Funktion wird dann
‫eine nächste Funktion aufgerufen,
‫auf die wir in jeder
‫Middleware-Funktion Zugriff haben.
‫Genau wie die Request- und Response-Objekte.
‫Und das werden wir im nächsten Video natürlich im Code sehen.
‫Wenn wir also die nächste
‫Funktion aufrufen, wird die nächste Middleware im
‫Stack mit genau demselben Anfrage- und Antwortobjekt ausgeführt.
‫Und das passiert mit allen Middlewares, bis
‫wir die letzte erreichen.
‫Und so
‫durchlaufen das anfängliche Anfrage- und
‫Antwortobjekt Schritt für Schritt jede Middleware.
‫Und Sie können sich diesen
‫ganzen Prozess als eine Art Pipeline vorstellen, in der unsere Daten
‫durchlaufen, so wie sie von der Anfrage bis zur endgültigen Antwort weitergeleitet wurden.
‫Gut?
‫Nun zu dieser letzten Middleware-Funktion, sie
‫ist normalerweise ein Route-Handler, genau wie wir zuvor programmiert haben.
‫In diesem Handler rufen wir also eigentlich nicht die nächste Funktion
‫auf, um zur nächsten Middleware zu wechseln.
‫Stattdessen senden wir schließlich die Antwortdaten
‫an den Client zurück.
‫Und
‫so beenden wir dann den sogenannten Request-Response-Zyklus.
‫Der Anfrage-Antwort-Zyklus ist also wirklich alles, worüber
‫wir hier zusammen gesprochen haben.
‫Es beginnt mit der eingehenden Anfrage,
‫führt dann Schritt für Schritt die gesamte Middleware
‫im Middleware-Stack aus
‫und sendet schließlich die Antwort, um den Zyklus zu beenden.
‫Sie sehen also, es ist wirklich nicht kompliziert.
‫Es ist eigentlich nur ein linearer Prozess.
‫Aber ich wünschte, jemand hätte mir so
‫etwas gezeigt, als ich lernte, wie man Express-Apps erstellt.
‫Ich meine, ich
‫könnte sie bauen, aber am Anfang
‫habe ich diesen gesamten Anfrage-Antwort-Zyklus nicht wirklich verstanden.
‫Es war sehr verwirrend.
‫Deshalb zeige ich Ihnen dies, weil ich
‫glaube, dass es für Sie viel, viel einfacher sein
‫wird, jetzt in den
‫Kurs einzusteigen, nachdem Sie genau verstanden haben, wie Express-Apps funktionieren.