﻿1
00:00:01,437 --> 00:00:03,800
‫-: (Mann) In diesem Vortrag lernen

2
00:00:03,800 --> 00:00:07,093
‫Sie, wie Sie mehrere Middleware-Funktionen für dieselbe Route verketten.

3
00:00:08,490 --> 00:00:11,500
‫Bis zu diesem Punkt haben wir also

4
00:00:11,500 --> 00:00:15,610
‫immer nur eine Middleware-Funktion übergeben, wenn wir eine Middleware definieren wollten.

5
00:00:15,610 --> 00:00:19,510
‫Also zum Beispiel hier, um diese Post-Anfrage zu

6
00:00:19,510 --> 00:00:22,700
‫bearbeiten, haben wir nur diese Middleware-Funktion übergeben,

7
00:00:22,700 --> 00:00:24,930
‫die unser createTour-Handler ist.

8
00:00:24,930 --> 00:00:27,400
‫Okay? Und das ist

9
00:00:27,400 --> 00:00:30,880
‫die einzige Funktion, die aufgerufen wird, wenn wir eine Post-Anfrage erhalten.

10
00:00:30,880 --> 00:00:33,840
‫Rechts? Aber sagen wir jetzt,

11
00:00:33,840 --> 00:00:35,940
‫dass wir tatsächlich mehrere Middleware-Funktionen ausführen möchten.

12
00:00:35,940 --> 00:00:39,280
‫Jetzt könnten Sie fragen: „Warum sollten wir das tun? ".

13
00:00:39,280 --> 00:00:42,713
‫Nun, wir könnten zum Beispiel vor createTour hier eine Middleware

14
00:00:42,713 --> 00:00:45,760
‫ausführen, um tatsächlich die Daten zu überprüfen, die

15
00:00:45,760 --> 00:00:47,060
‫im Hauptteil eingehen.

16
00:00:47,060 --> 00:00:50,490
‫Rechts? Also ein bisschen ähnlich zu dem, was wir vorher hatten.

17
00:00:50,490 --> 00:00:53,670
‫Wir haben diese Check-ID-Middleware also zuvor durchgeführt, um

18
00:00:53,670 --> 00:00:57,240
‫zu überprüfen, ob die ID tatsächlich gültig ist, und dies

19
00:00:57,240 --> 00:00:59,430
‫außerhalb der eigentlichen Routenhandler, sodass

20
00:00:59,430 --> 00:01:03,140
‫sie sich nur mit dem Abrufen, Aktualisieren oder Löschen einer

21
00:01:03,140 --> 00:01:04,080
‫Tour befassen.

22
00:01:04,080 --> 00:01:07,340
‫Rechts? Und hier, in diesem speziellen Beispiel

23
00:01:07,340 --> 00:01:09,130
‫mit post, möchten wir vielleicht dasselbe tun.

24
00:01:09,130 --> 00:01:12,900
‫Also wie gesagt, wir möchten vielleicht prüfen, ob dies erforderlich ist. buddy enthält tatsächlich die

25
00:01:12,900 --> 00:01:16,080
‫Daten, die wir für die Tour haben wollen.

26
00:01:16,080 --> 00:01:18,440
‫Okay? Und so machen wir das.

27
00:01:18,440 --> 00:01:22,020
‫Und eigentlich möchte ich, dass du es zuerst alleine machst.

28
00:01:22,020 --> 00:01:25,240
‫Dies ist also eine Art Herausforderung, die Sie sich stellen möchten,

29
00:01:25,240 --> 00:01:27,670
‫um die Konzepte zu verwenden, über die wir

30
00:01:27,670 --> 00:01:30,450
‫an dieser Stelle so oft gesprochen haben, und Ihre eigene

31
00:01:30,450 --> 00:01:31,450
‫Middleware-Funktion zu erstellen.

32
00:01:32,470 --> 00:01:34,950
‫Also lass es mich einfach hier als Kommentar schreiben.

33
00:01:34,950 --> 00:01:36,160
‫Ich

34
00:01:39,370 --> 00:01:43,060
‫möchte, dass Sie eine checkBody-Middleware-Funktion erstellen

35
00:01:43,060 --> 00:01:44,660
‫und darin überprüfen,

36
00:01:47,620 --> 00:01:52,620
‫ob der Textkörper die name-Eigenschaft für den Tournamen und

37
00:01:52,670 --> 00:01:54,770
‫die price-Eigenschaft enthält.

38
00:01:54,770 --> 00:01:58,020
‫Gut? Und wenn nicht, möchte ich, dass

39
00:01:58,020 --> 00:01:59,590
‫Sie einen vierhundert Statuscode zurücksenden.

40
00:01:59,590 --> 00:02:04,000
‫Wenn nicht, senden Sie vierhundert zurück, was für eine

41
00:02:04,000 --> 00:02:05,630
‫schlechte Anfrage steht.

42
00:02:05,630 --> 00:02:09,190
‫Im Grunde also eine ungültige Anfrage des Kunden, die

43
00:02:09,190 --> 00:02:13,060
‫in diesem Fall versucht, eine neue Tour ohne Namen und

44
00:02:13,060 --> 00:02:15,090
‫ohne Preiseigenschaften zu erstellen.

45
00:02:15,090 --> 00:02:16,693
‫Okay! Und das ist es tatsächlich.

46
00:02:19,580 --> 00:02:20,640
‫Und (lacht) eigentlich nicht.

47
00:02:20,640 --> 00:02:25,640
‫Daher möchte ich, dass Sie es auch zum Post-Handler-Stack hinzufügen.

48
00:02:28,600 --> 00:02:29,900
‫Grundsätzlich. Okay?

49
00:02:29,900 --> 00:02:31,700
‫Ich möchte, dass Sie es hier hinzufügen.

50
00:02:31,700 --> 00:02:33,430
‫Und ich werde Ihnen tatsächlich sagen, wie das

51
00:02:33,430 --> 00:02:35,730
‫geht, weil wir es zu diesem Zeitpunkt noch nicht gemacht haben.

52
00:02:35,730 --> 00:02:40,690
‫Es ist also ganz einfach. Nehmen wir an, unsere Funktion heißt

53
00:02:40,690 --> 00:02:43,590
‫Middleware und Sie müssen diese Funktion einfach

54
00:02:43,590 --> 00:02:46,800
‫hier vor dem createTour-Handler hinzufügen, der letztendlich die

55
00:02:46,800 --> 00:02:49,180
‫Tour erstellt. Okay?

56
00:02:49,180 --> 00:02:53,630
‫Wenn wir also eine Post-Anfrage für diese Route haben,

57
00:02:53,630 --> 00:02:57,334
‫wird sie zuerst diese Middleware und erst dann

58
00:02:57,334 --> 00:02:59,280
‫die createTour ausführen.

59
00:02:59,280 --> 00:03:02,740
‫Okay? So verketten wir also zwei verschiedene Middlewares.

60
00:03:02,740 --> 00:03:06,370
‫Aber jetzt möchte ich, dass Sie weitermachen und diese

61
00:03:06,370 --> 00:03:08,290
‫Middleware namens checkBody erstellen.

62
00:03:08,290 --> 00:03:11,423
‫Also pausiere das Video jetzt und versuche es bitte selbst.

63
00:03:15,220 --> 00:03:18,920
‫Okay! Ich hoffe, Sie waren damit erfolgreich

64
00:03:18,920 --> 00:03:21,250
‫und haben es dann getestet und dass alles funktioniert.

65
00:03:21,250 --> 00:03:24,323
‫Lassen Sie mich nun fortfahren und es auf meine Weise implementieren.

66
00:03:25,800 --> 00:03:28,210
‫Wir haben also diesen Fehler hier, aber machen Sie sich keine Sorgen.

67
00:03:28,210 --> 00:03:31,083
‫Das liegt an dieser Middleware, die nicht definiert ist.

68
00:03:33,120 --> 00:03:36,553
‫Lassen Sie mich es hier gleich nach der checkID-Middleware tun.

69
00:03:38,440 --> 00:03:40,297
‫Also Exporte. checkKörper.

70
00:03:44,760 --> 00:03:47,503
‫Wir müssen eine Antwort anfordern und weiter.

71
00:03:48,510 --> 00:03:51,560
‫Und so ist es eigentlich ganz einfach.

72
00:03:51,560 --> 00:03:56,030
‫Also wenn keine Anfrage kommt. Karosserie. Name, und ich

73
00:03:57,050 --> 00:03:59,080
‫denke, das ist der Name, aber

74
00:03:59,080 --> 00:04:01,070
‫lassen Sie uns das schnell überprüfen.

75
00:04:01,070 --> 00:04:03,570
‫So ist es hier Tour einfach.

76
00:04:03,570 --> 00:04:05,340
‫Ja, und tatsächlich heißt es 'Name' und

77
00:04:05,340 --> 00:04:06,790
‫das andere ist 'Preis'.

78
00:04:09,810 --> 00:04:13,420
‫Wenn also kein Name des Anfragetexts oder

79
00:04:13,420 --> 00:04:17,560
‫kein Anfragetext vorhanden ist. Preis gut, in

80
00:04:20,440 --> 00:04:24,460
‫diesem Fall werden wir nach wie vor von dieser

81
00:04:24,460 --> 00:04:27,163
‫Funktion zurückkehren und eine Antwort zurücksenden.

82
00:04:28,500 --> 00:04:33,500
‫Der Status hier ist also nicht vergessen: vierhundert fügen Sie dann

83
00:04:33,610 --> 00:04:37,283
‫etwas 'json' hinzu, wo der Status fehlgeschlagen ist.

84
00:04:38,520 --> 00:04:41,560
‫Das ist immer dann der Fall, wenn wir einen Vierhunderter-Code haben.

85
00:04:41,560 --> 00:04:42,750
‫Fügen Sie dann die

86
00:04:45,097 --> 00:04:46,180
‫Meldung "Fehlender

87
00:04:47,910 --> 00:04:49,400
‫Name oder Preis" hinzu.

88
00:04:49,400 --> 00:04:53,240
‫Okay? Preis und Name müssen also gleichzeitig da sein.

89
00:04:53,240 --> 00:04:57,500
‫Wenn also entweder der Preis nicht da ist oder der Name nicht

90
00:04:57,500 --> 00:04:59,993
‫da ist, senden wir diese Fehlermeldung bereits.

91
00:05:00,830 --> 00:05:04,500
‫Okay? Aber wenn alles stimmt, dann wollen

92
00:05:04,500 --> 00:05:06,283
‫wir zur nächsten Middleware übergehen.

93
00:05:07,864 --> 00:05:09,110
‫Und das sagen wir hier.

94
00:05:09,110 --> 00:05:12,650
‫Und dann wird die nächste Middleware natürlich createTour sein.

95
00:05:14,833 --> 00:05:15,666
‫Also dieser.

96
00:05:17,260 --> 00:05:20,750
‫Also, lass uns fortfahren und es dann hier hinzufügen.

97
00:05:20,750 --> 00:05:22,150
‫Also tourController. checkKörper.

98
00:05:25,090 --> 00:05:29,180
‫Alles klar, jetzt ist der Fehler weg und wir sollten

99
00:05:29,180 --> 00:05:33,562
‫ihn jetzt testen können. Schließen wir also diejenigen,

100
00:05:33,562 --> 00:05:38,000
‫die uns nicht interessieren, und erstellen Sie eine neue Tour.

101
00:05:38,000 --> 00:05:40,890
‫Im Moment haben wir also unseren Körper mit dem Namen, der Dauer

102
00:05:40,890 --> 00:05:43,080
‫und der Schwierigkeit, aber es gibt keinen Preis.

103
00:05:43,080 --> 00:05:46,160
‫Also sollten wir jetzt unseren Fehler bekommen. Rechts?

104
00:05:46,160 --> 00:05:50,150
‫Also testen wir das. Senden. Und tatsächlich haben

105
00:05:50,150 --> 00:05:53,630
‫wir bei unserer vierhundert schlechten Anfrage 'Name oder Preis fehlen'.

106
00:05:53,630 --> 00:05:57,090
‫Okay? Und so analysieren wir noch einmal, was hier passiert ist.

107
00:05:57,090 --> 00:06:00,830
‫Also schlug unsere Anfrage hier auf diese Route und

108
00:06:00,830 --> 00:06:05,360
‫es war eine Post-Anfrage. Und so führt es dann

109
00:06:05,360 --> 00:06:09,980
‫diese Middleware-Funktion aus und von dieser Funktion senden wir dann diese

110
00:06:10,830 --> 00:06:15,380
‫äh-Antwort, die besagt, dass, äh, der Name oder der Preis fehlt.

111
00:06:15,380 --> 00:06:17,730
‫Okay? Aber wenn jetzt noch der Preis hinzukommt... es ist also

112
00:06:21,530 --> 00:06:23,730
‫egal welcher preis, schick es, naja

113
00:06:23,730 --> 00:06:26,940
‫dann funktioniert alles gut und wir bekommen eine 201 erstellt.

114
00:06:26,940 --> 00:06:29,083
‫Also, was ist diesmal passiert? Nun, es hat nach dem Hauptteil gesucht und

115
00:06:30,480 --> 00:06:34,380
‫diese Bedingung war nicht wahr und

116
00:06:34,380 --> 00:06:37,650
‫so rief es die nächste Middleware im Stack auf, die createTour ist.

117
00:06:37,650 --> 00:06:41,420
‫Also erstellte es eine Tour, schickte das Ergebnis

118
00:06:41,420 --> 00:06:44,540
‫zurück und beendete so den Anfrage-Antwort-Zyklus.

119
00:06:44,540 --> 00:06:47,790
‫Rechts? Ich hoffe, das war eine, äh, nette kleine Herausforderung

120
00:06:47,790 --> 00:06:52,790
‫und wir werden diese Art von

121
00:06:52,930 --> 00:06:56,340
‫Logik hier die ganze Zeit verwenden, wo wir hier

122
00:06:56,340 --> 00:06:59,560
‫mehrere Arten von Handlern für dieselbe Route verketten. Hier könnten wir also zum Beispiel prüfen, ob ein bestimmter Benutzer

123
00:06:59,560 --> 00:07:02,760
‫eingeloggt ist oder ob

124
00:07:02,760 --> 00:07:06,540
‫er die Privilegien, also die Zugriffsrechte hat, sogar eine neue Tour zu schreiben.

125
00:07:06,540 --> 00:07:10,320
‫Oder wirklich alle möglichen Dinge, die wir passieren wollen,

126
00:07:10,320 --> 00:07:13,300
‫bevor die Tour tatsächlich erstellt wird.

127
00:07:13,300 --> 00:07:15,940
‫Okay? Und wieder tun wir das, weil wir die gesamte

128
00:07:15,940 --> 00:07:19,100
‫Logik, die sich nicht wirklich

129
00:07:19,100 --> 00:07:22,360
‫mit der Erstellung der neuen Ressource befasst, außerhalb dieses Handlers übernehmen möchten. Damit sich dieser Handler wirklich nur mit

130
00:07:22,360 --> 00:07:25,860
‫der Arbeit beschäftigt,

131
00:07:25,860 --> 00:07:27,890
‫die er verrichten soll.

