﻿1
00:00:01,210 --> 00:00:03,880
‫Kursleiter: Also, nach all dem Gerede über Middleware,

2
00:00:03,880 --> 00:00:05,290
‫lassen Sie uns

3
00:00:05,290 --> 00:00:07,463
‫nun tatsächlich unsere eigenen Middleware-Funktionen erstellen.

4
00:00:09,000 --> 00:00:10,810
‫Und denken Sie noch einmal

5
00:00:10,810 --> 00:00:12,930
‫daran, dass wir bereits Middleware verwendet haben.

6
00:00:12,930 --> 00:00:14,380
‫Schauen wir uns das also an.

7
00:00:15,730 --> 00:00:18,350
‫Und irgendwo hier oben.

8
00:00:18,350 --> 00:00:20,450
‫Sie sehen also, dass

9
00:00:20,450 --> 00:00:24,530
‫wir, um Middleware zu verwenden, App-Punkt-Verwendung verwendet haben, okay?

10
00:00:24,530 --> 00:00:28,190
‫Die Verwendungsmethode ist also diejenige, die wir verwenden, um

11
00:00:28,190 --> 00:00:30,030
‫Middleware tatsächlich zu verwenden.

12
00:00:30,030 --> 00:00:33,800
‫Also, fügen Sie unserem Middleware-Stack Middleware hinzu, okay?

13
00:00:33,800 --> 00:00:37,520
‫Dieser Express-Punkt-Json, der diese Json-Methode hier aufruft, gibt im

14
00:00:37,520 --> 00:00:39,620
‫Grunde eine Funktion zurück, okay?

15
00:00:39,620 --> 00:00:42,650
‫Und so wird diese Funktion dann dem Middleware-Stack hinzugefügt.

16
00:00:42,650 --> 00:00:43,900
‫Auf ähnliche Weise

17
00:00:43,900 --> 00:00:46,220
‫können wir unsere eigene Middleware-Funktion erstellen.

18
00:00:46,220 --> 00:00:48,190
‫Also, lass uns das jetzt tun.

19
00:00:48,190 --> 00:00:51,283
‫Und so müssen wir natürlich immer noch die App-Punktverwendung verwenden.

20
00:00:53,840 --> 00:00:56,810
‫Okay, und jetzt müssen wir hier nur noch

21
00:00:56,810 --> 00:01:00,820
‫den Pfad in unserer Funktion angeben, den wir dem Middleware-Stack hinzufügen möchten.

22
00:01:00,820 --> 00:01:02,730
‫Erinnern Sie sich also aus dem

23
00:01:02,730 --> 00:01:04,520
‫letzten Video daran, dass wir

24
00:01:04,520 --> 00:01:08,340
‫natürlich in jeder Middleware-Funktion Zugriff auf die Anfrage und die Antwort haben, okay?

25
00:01:08,340 --> 00:01:10,663
‫Aber wir haben auch die nächste Funktion.

26
00:01:11,890 --> 00:01:15,060
‫Und so bearbeiten wir diese Middleware-Funktion einfach

27
00:01:15,060 --> 00:01:17,580
‫als drittes Argument, okay?

28
00:01:17,580 --> 00:01:19,970
‫Und so weiß express dann,

29
00:01:19,970 --> 00:01:22,370
‫dass wir hier eigentlich eine Middleware definieren.

30
00:01:23,270 --> 00:01:24,820
‫In Ordung.

31
00:01:24,820 --> 00:01:26,160
‫Genau wie früher

32
00:01:26,160 --> 00:01:28,920
‫hätten wir dieses Argument hier auch anders

33
00:01:28,920 --> 00:01:32,950
‫nennen können, wie X oder N, oder es spielt keine Rolle.

34
00:01:32,950 --> 00:01:34,270
‫Wichtig ist, dass

35
00:01:34,270 --> 00:01:36,540
‫es das dritte Argument dieser Funktion ist.

36
00:01:36,540 --> 00:01:39,360
‫Express übergibt also grundsätzlich die

37
00:01:39,360 --> 00:01:42,780
‫nächste Funktion als drittes Argument an diese Middleware-Funktion.

38
00:01:42,780 --> 00:01:44,500
‫Und wir können es dann nennen, wie wir wollen.

39
00:01:44,500 --> 00:01:47,720
‫Aber noch einmal, als nächstes kommt wirklich die Konvention

40
00:01:47,720 --> 00:01:49,420
‫in Express, und um

41
00:01:49,420 --> 00:01:52,450
‫Verwirrung zu vermeiden, verwenden wir immer diesen Namen, okay?

42
00:01:52,450 --> 00:01:54,250
‫Und das gleiche für Anfrage

43
00:01:54,250 --> 00:01:57,590
‫und Antwort, wie ich bereits erwähnt habe, könnten wir sie anders nennen.

44
00:01:57,590 --> 00:02:00,410
‫Aber die Konvention ist, sie so zu nennen.

45
00:02:00,410 --> 00:02:02,470
‫Wie auch immer, lassen Sie uns einfach etwas

46
00:02:02,470 --> 00:02:04,080
‫an der Konsole protokollieren, hier

47
00:02:04,080 --> 00:02:06,650
‫in dieser Middleware-Funktion, nur damit wir etwas Code haben, der

48
00:02:06,650 --> 00:02:08,423
‫bei jeder neuen Anforderung tatsächlich ausgeführt wird.

49
00:02:09,280 --> 00:02:10,410
‫Sagen wir

50
00:02:12,510 --> 00:02:13,753
‫hallo von der Middleware.

51
00:02:15,850 --> 00:02:18,980
‫Und fügen Sie hier noch einmal ein paar Emojis hinzu, damit es ein wenig knallt.

52
00:02:18,980 --> 00:02:20,133
‫Das gefällt mir sehr.

53
00:02:21,876 --> 00:02:22,709
‫Und was passiert hier?

54
00:02:22,709 --> 00:02:23,750
‫Ah richtig.

55
00:02:23,750 --> 00:02:26,210
‫Das ist also der Code, den wir hier ausführen möchten.

56
00:02:26,210 --> 00:02:28,690
‫Und jetzt, genau wie wir im letzten Video

57
00:02:28,690 --> 00:02:31,780
‫gesprochen haben, müssen wir tatsächlich die nächste Funktion aufrufen, okay?

58
00:02:31,780 --> 00:02:33,510
‫Und wenn wir hier nicht

59
00:02:33,510 --> 00:02:35,570
‫als nächstes anrufen, naja, dann würde der

60
00:02:35,570 --> 00:02:37,750
‫Anfrage/Antwort-Zyklus an dieser Stelle wirklich stecken bleiben.

61
00:02:37,750 --> 00:02:39,290
‫Wir wären nicht in

62
00:02:39,290 --> 00:02:43,090
‫der Lage, weiterzumachen, und wir würden niemals eine Antwort an den Kunden zurücksenden.

63
00:02:43,090 --> 00:02:45,660
‫Ich kann also nicht genug betonen, wie wichtig es

64
00:02:45,660 --> 00:02:48,773
‫ist, niemals zu vergessen, next in all Ihrer Middleware zu verwenden.

65
00:02:50,230 --> 00:02:52,290
‫Okay, und so einfach ist es.

66
00:02:52,290 --> 00:02:55,880
‫Alles, was wir tun müssen, ist als nächstes anzugeben.

67
00:02:55,880 --> 00:02:57,330
‫Also dieses Argument hier.

68
00:02:57,330 --> 00:02:59,820
‫Und dann rufen Sie diese Funktion tatsächlich so auf.

69
00:02:59,820 --> 00:03:00,653
‫Okay.

70
00:03:00,653 --> 00:03:03,087
‫Und damit sind wir tatsächlich bereit, es auszuprobieren.

71
00:03:03,087 --> 00:03:04,370
‫Und alles, was wir tun

72
00:03:04,370 --> 00:03:06,763
‫müssen, ist eine einfache Anfrage an unsere API zu senden.

73
00:03:08,900 --> 00:03:11,270
‫Hier ist also die API.

74
00:03:11,270 --> 00:03:13,083
‫Lassen Sie uns dieses hier schließen.

75
00:03:14,210 --> 00:03:16,560
‫Und so ist es auch egal,

76
00:03:16,560 --> 00:03:18,980
‫denn das gilt natürlich für jede einzelne Anfrage.

77
00:03:18,980 --> 00:03:20,420
‫Gehen wir also zurück.

78
00:03:20,420 --> 00:03:22,760
‫Und tatsächlich haben wir Hallo von der

79
00:03:22,760 --> 00:03:25,400
‫Middleware, die auf unserer Konsole angemeldet ist, okay?

80
00:03:25,400 --> 00:03:26,313
‫So großartig.

81
00:03:27,240 --> 00:03:30,140
‫Und ich wollte kurz auf das eingehen, was ich

82
00:03:30,140 --> 00:03:32,150
‫gerade gesagt habe, nämlich, dass

83
00:03:32,150 --> 00:03:35,160
‫diese Middleware hier für jede einzelne Anfrage gilt, okay?

84
00:03:35,160 --> 00:03:37,600
‫Und das liegt daran, dass wir keine Route angegeben haben.

85
00:03:37,600 --> 00:03:40,850
‫Denken Sie also daran, dass, bevor ich sagte, dass alle

86
00:03:40,850 --> 00:03:43,710
‫Route-Handler hier eigentlich selbst eine Art Middleware sind.

87
00:03:43,710 --> 00:03:45,200
‫Es handelt sich lediglich

88
00:03:45,200 --> 00:03:47,790
‫um Middleware-Funktionen, die nur für eine bestimmte URL gelten.

89
00:03:47,790 --> 00:03:50,010
‫Also eine bestimmte Route, okay.

90
00:03:50,010 --> 00:03:52,980
‫Aber diese einfacheren Middleware-Funktionen, die

91
00:03:52,980 --> 00:03:54,900
‫wir hier definieren,

92
00:03:54,900 --> 00:03:58,080
‫werden auf jede einzelne Anfrage angewendet.

93
00:03:58,080 --> 00:04:00,070
‫Zumindest, wenn der Route-Handler vor

94
00:04:00,070 --> 00:04:01,820
‫dieser Middleware steht.

95
00:04:01,820 --> 00:04:04,250
‫Lassen Sie mich Ihnen also etwas zeigen.

96
00:04:04,250 --> 00:04:06,610
‫Und ich werde es von hier aus

97
00:04:06,610 --> 00:04:08,670
‫schneiden und es jetzt tatsächlich hier

98
00:04:08,670 --> 00:04:10,563
‫nach diesem Routenhandler platzieren.

99
00:04:12,240 --> 00:04:14,910
‫Was glauben Sie, was jetzt

100
00:04:14,910 --> 00:04:18,550
‫passieren wird, wenn ich diese Route anrufe?

101
00:04:18,550 --> 00:04:20,900
‫Schauen wir also, was passiert.

102
00:04:20,900 --> 00:04:24,040
‫Also genau diese Route, also die, die ich Ihnen gerade gezeigt habe, lassen

103
00:04:24,040 --> 00:04:25,640
‫Sie mich die Anfrage dorthin senden.

104
00:04:26,520 --> 00:04:29,420
‫Und jetzt gehen wir zurück und jetzt haben wir kein

105
00:04:29,420 --> 00:04:31,000
‫Hallo von der Middleware.

106
00:04:31,000 --> 00:04:32,460
‫Also, warum ist das so?

107
00:04:32,460 --> 00:04:34,930
‫Nun, einfach weil diese Middleware, also

108
00:04:34,930 --> 00:04:36,580
‫dieser Route-Handler hier,

109
00:04:36,580 --> 00:04:40,200
‫vor dieser Middleware-Funktion steht, die wir hier haben.

110
00:04:40,200 --> 00:04:42,330
‫Und dieser Route-Handler, der

111
00:04:42,330 --> 00:04:46,570
‫in diesem Fall alle Touren holt, beendet tatsächlich den Request-Response-Zyklus.

112
00:04:46,570 --> 00:04:48,130
‫Werfen wir also einen Blick darauf.

113
00:04:48,130 --> 00:04:49,763
‫So haben wir alle Touren bekommen.

114
00:04:51,220 --> 00:04:52,600
‫Also, wo ist das?

115
00:04:52,600 --> 00:04:56,100
‫Ja, also hier ist die Funktion und indem wir

116
00:04:56,100 --> 00:04:58,550
‫ein Ergebnis mit res dot

117
00:04:58,550 --> 00:05:01,090
‫json senden, beenden wir tatsächlich den Anfrage-Antwort-Zyklus.

118
00:05:01,090 --> 00:05:03,440
‫Und so ist die nächste Middleware

119
00:05:03,440 --> 00:05:05,430
‫im Stack, die in diesem

120
00:05:06,280 --> 00:05:09,700
‫Fall diese ist, also wird unsere benutzerdefinierte dann nicht aufgerufen.

121
00:05:09,700 --> 00:05:13,300
‫Auch hier, weil der Zyklus bereits beendet ist, okay.

122
00:05:13,300 --> 00:05:15,930
‫Stellen Sie also sicher, dass diese Reihenfolge beim

123
00:05:15,930 --> 00:05:18,200
‫Expressversand eine große Bedeutung hat, okay.

124
00:05:18,200 --> 00:05:20,490
‫Es ist wichtig zu

125
00:05:20,490 --> 00:05:23,590
‫verstehen, dass Express-Apps so funktionieren, okay.

126
00:05:23,590 --> 00:05:25,760
‫Um das zu testen, versuchen wir

127
00:05:25,760 --> 00:05:27,730
‫also zu sehen, was passiert,

128
00:05:27,730 --> 00:05:30,190
‫wenn wir eine Anfrage an diese Route senden.

129
00:05:30,190 --> 00:05:33,173
‫So erhalten Sie eine Tour-Update-Tour oder eine Tour löschen.

130
00:05:34,900 --> 00:05:38,090
‫Lassen Sie uns dies tun, die Anfrage hierher

131
00:05:38,090 --> 00:05:41,150
‫senden und zurückgehen, und jetzt haben wir Hallo

132
00:05:41,150 --> 00:05:42,740
‫von der Middleware.

133
00:05:42,740 --> 00:05:45,180
‫Das haben wir also eigentlich erwartet, oder?

134
00:05:45,180 --> 00:05:48,120
‫Das liegt natürlich daran, dass diese Middleware hier

135
00:05:48,120 --> 00:05:50,630
‫jetzt vor dem Route-Handler steht.

136
00:05:50,630 --> 00:05:53,390
‫Und so ist es natürlich ein

137
00:05:53,390 --> 00:05:57,050
‫Teil des Middleware-Stacks, der ausgeführt wird, bevor der Anfrage-Antwort-Zyklus endet.

138
00:05:57,050 --> 00:05:58,673
‫In Ordnung, sinnvoll?

139
00:06:00,630 --> 00:06:03,250
‫Nehmen wir das also zurück und

140
00:06:03,250 --> 00:06:05,560
‫definieren diese Art von globaler

141
00:06:05,560 --> 00:06:08,183
‫Middleware hier normalerweise vor allen unseren Route-Handlern.

142
00:06:09,500 --> 00:06:11,830
‫In Ordnung, dies ist also eine

143
00:06:11,830 --> 00:06:15,500
‫sehr einfache Middleware-Funktion, die wir gerade definiert haben, um Code auszuführen.

144
00:06:15,500 --> 00:06:17,490
‫Aber lassen Sie uns tatsächlich einen anderen machen.

145
00:06:17,490 --> 00:06:18,920
‫Und natürlich können

146
00:06:18,920 --> 00:06:21,800
‫wir so viele Middleware-Funktionen haben, wie wir möchten.

147
00:06:21,800 --> 00:06:23,170
‫Und dieses Mal

148
00:06:23,170 --> 00:06:25,053
‫wollen wir eigentlich das Request-Objekt manipulieren.

149
00:06:27,040 --> 00:06:29,090
‫Die Signatur ist hier also

150
00:06:29,090 --> 00:06:31,343
‫immer dieselbe, immer Anfrage, Antwort und Weiter.

151
00:06:32,890 --> 00:06:35,370
‫Und jetzt lassen Sie uns die Anfrage tatsächlich manipulieren.

152
00:06:35,370 --> 00:06:36,800
‫Alles, was wir in

153
00:06:36,800 --> 00:06:39,990
‫diesem Fall tun möchten, ist, der Anfrage die aktuelle Uhrzeit hinzuzufügen.

154
00:06:39,990 --> 00:06:42,110
‫Wir können also einfach eine

155
00:06:42,110 --> 00:06:44,963
‫Eigenschaft für das Anfrageobjekt namens Anfragezeit definieren.

156
00:06:47,480 --> 00:06:50,300
‫Und dann stellen Sie es auf ein

157
00:06:50,300 --> 00:06:51,210
‫neues

158
00:06:51,210 --> 00:06:54,300
‫Datum ein, was im Grunde gleich jetzt bedeutet.

159
00:06:54,300 --> 00:06:57,230
‫Und dann können wir eine sehr praktische Datumsfunktion verwenden,

160
00:06:57,230 --> 00:06:59,670
‫die als ISO-String aufgerufen wird, die ihn

161
00:06:59,670 --> 00:07:01,520
‫dann in einen schönen, lesbaren

162
00:07:01,520 --> 00:07:03,330
‫String für uns umwandelt.

163
00:07:03,330 --> 00:07:05,930
‫Nehmen wir also an, wir haben einen Route-Handler,

164
00:07:05,930 --> 00:07:07,860
‫der wirklich die Informationen

165
00:07:07,860 --> 00:07:10,310
‫darüber benötigt, wann genau die Anfrage auftritt.

166
00:07:10,310 --> 00:07:12,860
‫Die sehr einfache Lösung besteht also

167
00:07:12,860 --> 00:07:16,470
‫darin, einer Anfrage einfach so etwas mithilfe von Middleware hinzuzufügen.

168
00:07:16,470 --> 00:07:17,520
‫In Ordung?

169
00:07:17,520 --> 00:07:18,960
‫Vergessen Sie jetzt

170
00:07:18,960 --> 00:07:21,890
‫natürlich nicht, die nächste Middleware im Stack aufzurufen, okay.

171
00:07:21,890 --> 00:07:26,830
‫Also im Moment haben wir Anfrage, Zeit für alle Anfragen.

172
00:07:26,830 --> 00:07:29,800
‫Wir können hier also jetzt zum Beispiel einen Routenhandler

173
00:07:29,800 --> 00:07:32,850
‫verwenden (murmelt), um alle Touren dazu zu bringen, das einfach

174
00:07:32,850 --> 00:07:35,163
‫für uns in die Konsole zu protokollieren.

175
00:07:36,640 --> 00:07:40,583
‫Also Konsolen-Dot-Log und seine eigentliche Anfragezeit.

176
00:07:42,130 --> 00:07:46,170
‫Okay, oder wir könnten dies auch in der Antwort senden.

177
00:07:46,170 --> 00:07:47,460
‫Lass mich das einfach testen.

178
00:07:47,460 --> 00:07:49,590
‫Und nennen wir das

179
00:07:52,670 --> 00:07:56,830
‫einfach angefordert um und req dot request time.

180
00:07:56,830 --> 00:07:57,870
‫Das ist es.

181
00:07:57,870 --> 00:08:00,160
‫Also, ja, lass uns weitermachen und das herausfinden.

182
00:08:00,160 --> 00:08:02,840
‫Unsere Middleware ist also richtig, oder?

183
00:08:02,840 --> 00:08:05,870
‫Ja, also rufen wir als nächstes an, wenn wir fertig sind,

184
00:08:05,870 --> 00:08:07,413
‫und testen wir das jetzt.

185
00:08:08,450 --> 00:08:10,273
‫Denken Sie daran, dass es auf allen Touren steht.

186
00:08:11,310 --> 00:08:14,000
‫Und wenn wir jetzt zurückgehen oder wenn wir nach

187
00:08:14,000 --> 00:08:16,420
‫oben gehen, nun, sollte es eigentlich hier sein.

188
00:08:16,420 --> 00:08:17,973
‫Also, was ist hier falsch?

189
00:08:18,920 --> 00:08:20,060
‫Sie sehen,

190
00:08:20,060 --> 00:08:22,430
‫dass wir hier unten tatsächlich nur eine

191
00:08:22,430 --> 00:08:27,230
‫Funktion protokolliert haben und natürlich haben wir die beiden ISO-Strings nicht wirklich aufgerufen.

192
00:08:27,230 --> 00:08:31,000
‫Es ist also eine Methode, die wir nennen müssen.

193
00:08:31,000 --> 00:08:33,930
‫Also speichern Sie es und versuchen Sie es erneut.

194
00:08:33,930 --> 00:08:37,790
‫Und jetzt haben wir um und dann den heutigen Termin angefragt.

195
00:08:37,790 --> 00:08:38,740
‫So perfekt.

196
00:08:38,740 --> 00:08:40,860
‫Das kam von unserer Middleware.

197
00:08:40,860 --> 00:08:44,980
‫Einfach deshalb, weil wir diese Eigenschaft zu unserer Anfrage hinzugefügt haben.

198
00:08:44,980 --> 00:08:46,250
‫Toll.

199
00:08:46,250 --> 00:08:49,280
‫Ich hoffe also, dass Sie damit einen großen Schritt

200
00:08:49,280 --> 00:08:52,730
‫nach vorne gemacht haben, um wirklich zu verstehen, wie die

201
00:08:52,730 --> 00:08:53,810
‫Node-App funktioniert,

202
00:08:53,810 --> 00:08:56,370
‫wie Middleware funktioniert, wie der gesamte Request-Response-Zyklus funktioniert,

203
00:08:56,370 --> 00:08:58,300
‫denn das wird wirklich den Unterschied

204
00:08:58,300 --> 00:09:00,453
‫machen, wenn Sie schreiben eigene Anwendungen.

