﻿1
00:00:01,530 --> 00:00:03,010
‫Dozent: In den letzten

2
00:00:03,010 --> 00:00:05,020
‫paar Vorlesungen hoffe ich, dass Sie sich

3
00:00:05,020 --> 00:00:06,870
‫die Grundlagen der Express-Entwicklung angeeignet haben.

4
00:00:06,870 --> 00:00:10,190
‫Jetzt ist also der perfekte Zeitpunkt, um etwas tiefer

5
00:00:10,190 --> 00:00:11,750
‫in die Funktionsweise

6
00:00:11,750 --> 00:00:14,380
‫von Express einzutauchen, und dafür müssen wir

7
00:00:14,380 --> 00:00:16,633
‫über Middleware und den Request-Response-Zyklus sprechen.

8
00:00:17,550 --> 00:00:20,670
‫Die Essenz der Express-Entwicklung besteht also

9
00:00:20,670 --> 00:00:21,770
‫darin, den

10
00:00:21,770 --> 00:00:24,960
‫Anfrage-Antwort-Zyklus zu verstehen und dann zu verwenden.

11
00:00:24,960 --> 00:00:27,280
‫Deshalb möchte ich diese Idee in

12
00:00:27,280 --> 00:00:29,890
‫diesem Video auf visuelle Weise deutlich machen.

13
00:00:29,890 --> 00:00:32,410
‫Um den Anfrage-Antwort-Zyklus zu starten,

14
00:00:32,410 --> 00:00:36,720
‫erhält die Express-App eine Anfrage, wenn jemand einen Server trifft,

15
00:00:36,720 --> 00:00:39,310
‫für den sie dann ein Anfrage-

16
00:00:39,310 --> 00:00:41,170
‫und Antwortobjekt erstellt.

17
00:00:41,170 --> 00:00:43,530
‫Diese Daten werden dann verwendet

18
00:00:43,530 --> 00:00:48,160
‫und verarbeitet, um eine aussagekräftige Antwort zu generieren und zurückzusenden.

19
00:00:48,160 --> 00:00:50,740
‫Um diese Daten zu verarbeiten,

20
00:00:50,740 --> 00:00:53,740
‫verwenden wir in Express eine sogenannte Middleware,

21
00:00:53,740 --> 00:00:57,220
‫die die Anfrage oder das Antwortobjekt manipulieren kann.

22
00:00:57,220 --> 00:01:00,680
‫Oder führen Sie wirklich jeden anderen Code aus, der uns gefällt.

23
00:01:00,680 --> 00:01:02,820
‫Bei Middleware muss es also

24
00:01:02,820 --> 00:01:05,230
‫nicht immer nur um die Anfrage oder

25
00:01:05,230 --> 00:01:08,070
‫das Antwortobjekt gehen, sondern meistens um die Anfrage.

26
00:01:08,070 --> 00:01:10,880
‫Und eigentlich haben wir schon vorher Middleware verwendet.

27
00:01:10,880 --> 00:01:15,130
‫Wir haben Express dot JSON verwendet, um Zugriff auf den Anfragetext des

28
00:01:15,130 --> 00:01:16,600
‫Anfrageobjekts zu erhalten.

29
00:01:16,600 --> 00:01:18,250
‫Erinnere dich daran?

30
00:01:18,250 --> 00:01:20,600
‫Jetzt heißt es Middleware, erinnern

31
00:01:20,600 --> 00:01:23,930
‫Sie sich, weil es eine Funktion ist, die zwischen

32
00:01:23,930 --> 00:01:26,570
‫dem Empfangen der Anfrage und dem Senden

33
00:01:26,570 --> 00:01:28,540
‫der Antwort ausgeführt wird.

34
00:01:28,540 --> 00:01:31,020
‫Und tatsächlich können wir sagen, dass in

35
00:01:31,020 --> 00:01:33,010
‫Express alles Middleware ist.

36
00:01:33,010 --> 00:01:35,270
‫Sogar unsere Routendefinitionen.

37
00:01:35,270 --> 00:01:38,460
‫Auch wenn wir unsere Routen definiert haben,

38
00:01:38,460 --> 00:01:42,120
‫können wir uns die Route-Handler-Funktionen, die wir geschrieben haben,

39
00:01:42,120 --> 00:01:43,600
‫als Middleware-Funktionen vorstellen.

40
00:01:43,600 --> 00:01:45,120
‫Sie sind einfach

41
00:01:45,120 --> 00:01:48,010
‫Middleware-Funktionen, die nur für bestimmte Routen ausgeführt werden.

42
00:01:48,010 --> 00:01:49,290
‫Okay?

43
00:01:49,290 --> 00:01:52,840
‫Einige Beispiele für Middleware sind jetzt Express dot JSON, das

44
00:01:52,840 --> 00:01:54,860
‫auch Body-Parser genannt wird und das

45
00:01:54,860 --> 00:01:56,870
‫wir bereits zuvor verwendet haben.

46
00:01:56,870 --> 00:01:59,100
‫Oder einige Protokollierungsfunktionen

47
00:01:59,100 --> 00:02:02,130
‫oder das Festlegen bestimmter HTTP-Header.

48
00:02:02,130 --> 00:02:05,760
‫Die Möglichkeiten mit Middleware sind wirklich endlos.

49
00:02:05,760 --> 00:02:08,460
‫Alles klar, und jetzt in technischer Hinsicht

50
00:02:08,460 --> 00:02:11,000
‫sagen wir, dass die gesamte Middleware,

51
00:02:11,000 --> 00:02:12,370
‫die wir in

52
00:02:12,370 --> 00:02:15,200
‫unserer App verwenden, als Middleware-Stack bezeichnet wird.

53
00:02:15,200 --> 00:02:17,720
‫Es ist hier sehr wichtig zu beachten, dass

54
00:02:17,720 --> 00:02:20,230
‫die Reihenfolge der Middleware im Stack tatsächlich durch

55
00:02:20,230 --> 00:02:22,540
‫die Reihenfolge definiert wird, in der

56
00:02:22,540 --> 00:02:24,500
‫sie im Code definiert sind.

57
00:02:24,500 --> 00:02:27,110
‫Eine Middleware, die zuerst im Code auftaucht,

58
00:02:27,110 --> 00:02:29,920
‫wird also vor einer später ausgeführten Middleware ausgeführt.

59
00:02:29,920 --> 00:02:33,170
‫Daher spielt die Reihenfolge des Codes in Express eine große Rolle.

60
00:02:33,170 --> 00:02:34,360
‫Okay?

61
00:02:34,360 --> 00:02:38,010
‫Nun können Sie sich den gesamten Prozess so vorstellen,

62
00:02:38,010 --> 00:02:40,120
‫dass unsere Request- und Response-Objekte,

63
00:02:40,120 --> 00:02:41,890
‫die am Anfang

64
00:02:41,890 --> 00:02:45,310
‫erstellt wurden, jede Middleware durchlaufen, wo sie verarbeitet

65
00:02:45,310 --> 00:02:48,710
‫werden oder wo nur anderer Code ausgeführt wird.

66
00:02:48,710 --> 00:02:51,370
‫Am Ende jeder Middleware-Funktion wird dann

67
00:02:51,370 --> 00:02:53,150
‫eine nächste Funktion aufgerufen,

68
00:02:53,150 --> 00:02:55,340
‫auf die wir in jeder

69
00:02:55,340 --> 00:02:56,860
‫Middleware-Funktion Zugriff haben.

70
00:02:56,860 --> 00:02:59,580
‫Genau wie die Request- und Response-Objekte.

71
00:02:59,580 --> 00:03:02,960
‫Und das werden wir im nächsten Video natürlich im Code sehen.

72
00:03:02,960 --> 00:03:05,375
‫Wenn wir also die nächste

73
00:03:05,375 --> 00:03:08,470
‫Funktion aufrufen, wird die nächste Middleware im

74
00:03:08,470 --> 00:03:11,960
‫Stack mit genau demselben Anfrage- und Antwortobjekt ausgeführt.

75
00:03:11,960 --> 00:03:14,480
‫Und das passiert mit allen Middlewares, bis

76
00:03:14,480 --> 00:03:16,460
‫wir die letzte erreichen.

77
00:03:16,460 --> 00:03:17,830
‫Und so

78
00:03:17,830 --> 00:03:20,360
‫durchlaufen das anfängliche Anfrage- und

79
00:03:20,360 --> 00:03:23,400
‫Antwortobjekt Schritt für Schritt jede Middleware.

80
00:03:23,400 --> 00:03:25,490
‫Und Sie können sich diesen

81
00:03:25,490 --> 00:03:29,190
‫ganzen Prozess als eine Art Pipeline vorstellen, in der unsere Daten

82
00:03:29,190 --> 00:03:33,440
‫durchlaufen, so wie sie von der Anfrage bis zur endgültigen Antwort weitergeleitet wurden.

83
00:03:33,440 --> 00:03:34,472
‫Gut?

84
00:03:34,472 --> 00:03:36,900
‫Nun zu dieser letzten Middleware-Funktion, sie

85
00:03:36,900 --> 00:03:40,230
‫ist normalerweise ein Route-Handler, genau wie wir zuvor programmiert haben.

86
00:03:40,230 --> 00:03:43,250
‫In diesem Handler rufen wir also eigentlich nicht die nächste Funktion

87
00:03:43,250 --> 00:03:45,270
‫auf, um zur nächsten Middleware zu wechseln.

88
00:03:45,270 --> 00:03:47,950
‫Stattdessen senden wir schließlich die Antwortdaten

89
00:03:47,950 --> 00:03:49,800
‫an den Client zurück.

90
00:03:49,800 --> 00:03:50,633
‫Und

91
00:03:50,633 --> 00:03:53,983
‫so beenden wir dann den sogenannten Request-Response-Zyklus.

92
00:03:55,380 --> 00:03:58,590
‫Der Anfrage-Antwort-Zyklus ist also wirklich alles, worüber

93
00:03:58,590 --> 00:04:00,900
‫wir hier zusammen gesprochen haben.

94
00:04:00,900 --> 00:04:03,040
‫Es beginnt mit der eingehenden Anfrage,

95
00:04:03,040 --> 00:04:05,980
‫führt dann Schritt für Schritt die gesamte Middleware

96
00:04:05,980 --> 00:04:07,240
‫im Middleware-Stack aus

97
00:04:07,240 --> 00:04:10,513
‫und sendet schließlich die Antwort, um den Zyklus zu beenden.

98
00:04:11,370 --> 00:04:13,900
‫Sie sehen also, es ist wirklich nicht kompliziert.

99
00:04:13,900 --> 00:04:16,450
‫Es ist eigentlich nur ein linearer Prozess.

100
00:04:16,450 --> 00:04:19,200
‫Aber ich wünschte, jemand hätte mir so

101
00:04:19,200 --> 00:04:22,000
‫etwas gezeigt, als ich lernte, wie man Express-Apps erstellt.

102
00:04:22,000 --> 00:04:23,420
‫Ich meine, ich

103
00:04:23,420 --> 00:04:26,090
‫könnte sie bauen, aber am Anfang

104
00:04:26,090 --> 00:04:29,230
‫habe ich diesen gesamten Anfrage-Antwort-Zyklus nicht wirklich verstanden.

105
00:04:29,230 --> 00:04:30,760
‫Es war sehr verwirrend.

106
00:04:30,760 --> 00:04:33,280
‫Deshalb zeige ich Ihnen dies, weil ich

107
00:04:33,280 --> 00:04:36,710
‫glaube, dass es für Sie viel, viel einfacher sein

108
00:04:36,710 --> 00:04:38,800
‫wird, jetzt in den

109
00:04:38,800 --> 00:04:42,383
‫Kurs einzusteigen, nachdem Sie genau verstanden haben, wie Express-Apps funktionieren.

