﻿1
00:00:01,330 --> 00:00:02,860
‫Kursleiter: Eine weitere

2
00:00:02,860 --> 00:00:04,910
‫nette kleine Funktion, die wir einer

3
00:00:04,910 --> 00:00:08,070
‫API hinzufügen können, ist die Bereitstellung einer Alias-Route für

4
00:00:08,070 --> 00:00:09,660
‫eine möglicherweise sehr beliebte

5
00:00:09,660 --> 00:00:11,963
‫Anfrage, die möglicherweise ständig angefordert wird.

6
00:00:13,400 --> 00:00:15,260
‫Und zum Beispiel möchten

7
00:00:15,260 --> 00:00:17,790
‫wir vielleicht eine Route speziell für

8
00:00:17,790 --> 00:00:20,203
‫die fünf besten günstigen Touren anbieten.

9
00:00:21,324 --> 00:00:23,530
‫Wenn wir also unsere reguläre Route hier

10
00:00:23,530 --> 00:00:25,530
‫mit den Filtern und mit allen

11
00:00:25,530 --> 00:00:26,580
‫Funktionen verwenden würden,

12
00:00:26,580 --> 00:00:29,930
‫die wir bereits haben, würde die Anfrage in etwa so aussehen.

13
00:00:29,930 --> 00:00:32,090
‫Also, lass uns das alles loswerden.

14
00:00:32,090 --> 00:00:34,510
‫Also die fünf besten und günstigsten Touren.

15
00:00:34,510 --> 00:00:37,340
‫Das heißt, wir haben ein Limit von fünf

16
00:00:39,495 --> 00:00:42,663
‫und dann sortieren wir nach Bewertungen und nach Preis.

17
00:00:44,300 --> 00:00:47,640
‫Also, sortieren und dann die

18
00:00:47,640 --> 00:00:52,640
‫durchschnittliche Bewertung und absteigend, also minus Bewertungen Durchschnitt.

19
00:00:54,110 --> 00:00:56,750
‫Und falls sie den gleichen Durchschnitt haben,

20
00:00:56,750 --> 00:00:59,270
‫wollen wir den günstigsten Preis.

21
00:00:59,270 --> 00:01:02,353
‫Und so werden wir auch nach dem Preis sortieren.

22
00:01:03,610 --> 00:01:06,060
‫Werfen wir kurz einen Blick auf die Ergebnisse.

23
00:01:06,060 --> 00:01:08,163
‫Und tatsächlich bekommen wir hier fünf Touren.

24
00:01:09,670 --> 00:01:12,560
‫Und Postman macht dieses Scrollen noch einmal.

25
00:01:12,560 --> 00:01:18,640
‫Wir haben also Touren mit 4. 9, 4.

26
00:01:18,640 --> 00:01:18,640
‫9, 4.

27
00:01:18,640 --> 00:01:20,553
‫9 wieder, 4. 8, und 4. 7.

28
00:01:22,250 --> 00:01:27,060
‫Das sind also unsere fünf besten und günstigsten Touren.

29
00:01:27,060 --> 00:01:29,150
‫Wenn wir am billigsten und am

30
00:01:29,150 --> 00:01:32,270
‫besten sagen würden, dann müssten wir vielleicht zuerst nach dem Preis

31
00:01:32,270 --> 00:01:34,580
‫sortieren, weil einige davon nicht wirklich billig sind.

32
00:01:34,580 --> 00:01:36,320
‫Zum Beispiel dieser.

33
00:01:36,320 --> 00:01:40,180
‫Aber wir haben zuerst den Durchschnitt ausgewählt.

34
00:01:40,180 --> 00:01:43,160
‫Also sortierten wir zuerst nach dem höchsten Durchschnitt

35
00:01:43,160 --> 00:01:46,700
‫und erst dann bei Gleichstand, im Grunde erst dann nach

36
00:01:46,700 --> 00:01:47,900
‫dem Preis.

37
00:01:49,120 --> 00:01:51,340
‫Nehmen wir an, dies ist eine Anfrage,

38
00:01:51,340 --> 00:01:53,350
‫die ständig durchgeführt wird, und wir

39
00:01:53,350 --> 00:01:55,060
‫möchten eine Route bereitstellen, die

40
00:01:55,060 --> 00:01:57,453
‫sich der Benutzer einfach und leicht merken kann.

41
00:01:58,670 --> 00:02:02,110
‫Gehen wir also zu unserer App und versuchen Sie, das zu implementieren.

42
00:02:02,110 --> 00:02:06,330
‫Und wir beginnen mit ihren Routen, also Tourrouter.

43
00:02:06,330 --> 00:02:08,703
‫Und dann müssen wir eine neue Route erstellen.

44
00:02:09,550 --> 00:02:12,390
‫Und das machen wir hier, ganz oben.

45
00:02:12,390 --> 00:02:16,913
‫Also Router. Route.

46
00:02:18,650 --> 00:02:21,370
‫Und wie sollen wir diese Route nennen?

47
00:02:21,370 --> 00:02:25,293
‫Sagen wir Top-5-Billig.

48
00:02:26,590 --> 00:02:30,010
‫Also ein ganz einfacher Name, aber er wird funktionieren.

49
00:02:30,010 --> 00:02:31,810
‫Und dann wollen wir

50
00:02:31,810 --> 00:02:34,103
‫eigentlich nur Anfragen zu dieser Strecke bekommen.

51
00:02:35,170 --> 00:02:37,480
‫Und so ist es jetzt an der Zeit, nachzudenken.

52
00:02:37,480 --> 00:02:41,370
‫Wie werden wir diese Funktionalität implementieren?

53
00:02:41,370 --> 00:02:43,530
‫Nun, im Grunde wollen

54
00:02:43,530 --> 00:02:47,273
‫wir eigentlich immer noch alle Touren wie hier bekommen.

55
00:02:48,210 --> 00:02:51,070
‫Lassen Sie mich also fortfahren und damit beginnen, das

56
00:02:51,070 --> 00:02:52,930
‫hier zu kopieren und einzufügen.

57
00:02:52,930 --> 00:02:56,320
‫Wir möchten diese Funktion hier also wirklich immer noch verwenden, da es

58
00:02:56,320 --> 00:02:57,740
‫nicht wirklich sinnvoll ist,

59
00:02:57,740 --> 00:03:00,900
‫die gesamte Logik, die darin enthalten ist, neu zu schreiben.

60
00:03:00,900 --> 00:03:04,010
‫Aber bevor wir diesen Routen-Ender aufrufen können, möchten wir

61
00:03:04,010 --> 00:03:06,690
‫im Grunde einige der Felder in der Abfragezeichenfolge

62
00:03:06,690 --> 00:03:07,833
‫vorab ausfüllen.

63
00:03:08,970 --> 00:03:10,340
‫Wir wissen

64
00:03:10,340 --> 00:03:13,590
‫also bereits, dass unsere Abfragezeichenfolge so aussehen sollte.

65
00:03:13,590 --> 00:03:16,370
‫Und tatsächlich können wir hier noch einiges hinzufügen.

66
00:03:16,370 --> 00:03:18,070
‫Aber im Wesentlichen muss

67
00:03:18,070 --> 00:03:19,970
‫unsere Abfragezeichenfolge ungefähr so aussehen.

68
00:03:19,970 --> 00:03:23,100
‫Die Lösung besteht also darin, eine Middleware auszuführen,

69
00:03:23,100 --> 00:03:26,163
‫bevor wir diesen getAllTours-Handler tatsächlich ausführen.

70
00:03:27,080 --> 00:03:28,760
‫Diese Middleware-Funktion

71
00:03:28,760 --> 00:03:31,843
‫manipuliert dann das eingehende Abfrageobjekt.

72
00:03:33,010 --> 00:03:35,210
‫Dies ist also ein weiteres

73
00:03:35,210 --> 00:03:38,150
‫wirklich schönes Beispiel für die Verwendung von Middleware,

74
00:03:38,150 --> 00:03:41,100
‫da Sie sich wirklich mit diesem Konzept des

75
00:03:41,100 --> 00:03:44,150
‫strategischen Einsatzes von Middleware vertraut machen und sich daran

76
00:03:44,150 --> 00:03:47,123
‫gewöhnen müssen, um das Anforderungsobjekt nach Bedarf zu ändern.

77
00:03:48,690 --> 00:03:52,100
‫Also fügen wir es hier hinzu.

78
00:03:52,100 --> 00:03:53,920
‫Also tourController.

79
00:03:53,920 --> 00:03:55,150
‫Und dann

80
00:03:55,150 --> 00:03:57,630
‫die Middleware-Funktion, die wir gleich erstellen

81
00:03:57,630 --> 00:03:59,733
‫werden, die aliasTopTours heißt.

82
00:04:05,060 --> 00:04:08,820
‫Also, lass uns diesen Namen kopieren, zum tourController wechseln und

83
00:04:08,820 --> 00:04:11,843
‫ich werde ihn hier ganz oben platzieren.

84
00:04:14,100 --> 00:04:15,217
‫Also Exporte. dann Anfrage, Antwort

85
00:04:17,370 --> 00:04:19,823
‫und was ist das dritte Argument, das wir

86
00:04:21,650 --> 00:04:22,600
‫in der

87
00:04:22,600 --> 00:04:24,030
‫Middleware brauchen, erinnern Sie sich?

88
00:04:24,030 --> 00:04:27,180
‫Und ich weiß, dass der Express-Abschnitt zu diesem Zeitpunkt schon

89
00:04:27,180 --> 00:04:30,700
‫ziemlich weit weg ist, aber ich hoffe, Sie erinnern sich daran, dass

90
00:04:30,700 --> 00:04:33,280
‫das dritte Argument hier als nächstes kommen muss.

91
00:04:33,280 --> 00:04:36,230
‫Also, um die nächste Middleware aufzurufen,

92
00:04:36,230 --> 00:04:38,970
‫die sich im Middleware-Stack befindet.

93
00:04:38,970 --> 00:04:40,520
‫Sparen Sie.

94
00:04:45,600 --> 00:04:46,640
‫Und so sollte dieser Fehler dort verschwinden.

95
00:04:46,640 --> 00:04:49,203
‫Also, lasst uns tun, was wir gesagt haben.

96
00:04:53,554 --> 00:04:55,950
‫Im Grunde also, um

97
00:04:55,950 --> 00:04:58,870
‫das Abfrageobjekt so zu manipulieren, dass es

98
00:04:58,870 --> 00:05:01,960
‫beim Erreichen des getAllTours-Handlers bereits anders ist.

99
00:05:01,960 --> 00:05:03,423
‫Also, lass uns das zuerst

100
00:05:04,270 --> 00:05:07,160
‫tun und dann wirklich einen Blick darauf werfen, was passiert.

101
00:05:07,160 --> 00:05:08,783
‫Denken Sie daran, das Limit wird auf fünf festgelegt.

102
00:05:10,010 --> 00:05:13,280
‫Und denken Sie daran, dass hier alles Strings sind und ich

103
00:05:13,280 --> 00:05:15,320
‫dies auch auf einen String setze.

104
00:05:15,320 --> 00:05:17,370
‫Was hatten wir jetzt noch?

105
00:05:19,350 --> 00:05:20,703
‫Also, wir haben

106
00:05:21,580 --> 00:05:25,200
‫diese Art, also kopieren wir das hier einfach und sagen req. Anfrage. Sortieren.

107
00:05:26,400 --> 00:05:30,623
‫Das sollte es sein.

108
00:05:32,247 --> 00:05:35,050
‫Und dann können wir tatsächlich

109
00:05:35,050 --> 00:05:39,230
‫auch einige Felder angeben, damit der Benutzer nicht alle

110
00:05:39,230 --> 00:05:42,560
‫Felder bekommt, die wir dort haben.

111
00:05:42,560 --> 00:05:43,660
‫Nehmen wir

112
00:05:46,420 --> 00:05:49,033
‫also an, wir wollen nur den Namen, den

113
00:05:50,070 --> 00:05:52,973
‫Preis, den Bewertungsdurchschnitt, die Zusammenfassung und den Schwierigkeitsgrad.

114
00:05:54,570 --> 00:05:55,653
‫Speichern Sie es

115
00:05:58,650 --> 00:06:02,600
‫und jetzt brauchen wir nur noch das nächste Mal, sonst bleibt diese

116
00:06:02,600 --> 00:06:05,730
‫Middleware für immer hier hängen und kann nicht weitermachen.

117
00:06:05,730 --> 00:06:07,043
‫Also, lassen Sie uns jetzt

118
00:06:08,440 --> 00:06:10,420
‫etwas besser herausfinden, was hier tatsächlich passieren wird.

119
00:06:10,420 --> 00:06:12,690
‫Sobald also jemand

120
00:06:12,690 --> 00:06:16,900
‫die Top-5-Billig-Route trifft, legen wir los.

121
00:06:16,900 --> 00:06:17,733
‫Die erste Middleware, die ausgeführt wird, ist aliasTopTours.

122
00:06:17,733 --> 00:06:21,470
‫Also die Funktion, die wir gerade erstellt haben.

123
00:06:21,470 --> 00:06:23,433
‫Was dies tun wird, ist, dass

124
00:06:25,420 --> 00:06:27,060
‫diese Eigenschaften des Abfrageobjekts

125
00:06:27,060 --> 00:06:30,070
‫auf diese Werte gesetzt werden, die wir hier angegeben haben.

126
00:06:30,070 --> 00:06:32,490
‫Grundsätzlich Teile des Abfrageobjekts

127
00:06:32,490 --> 00:06:35,800
‫vorausfüllen, bevor wir dann den getAllTours-Handler erreichen.

128
00:06:35,800 --> 00:06:39,453
‫Sobald wir also zu dieser Funktion gelangen, ist das

129
00:06:40,720 --> 00:06:43,670
‫Abfrageobjekt bereits vorausgefüllt, auch wenn der Benutzer

130
00:06:43,670 --> 00:06:46,080
‫keinen dieser Parameter in den

131
00:06:46,080 --> 00:06:47,960
‫Abfragestring eingegeben hat.

132
00:06:47,960 --> 00:06:49,963
‫Im Wesentlichen füllen wir hier

133
00:06:51,230 --> 00:06:52,170
‫die

134
00:06:52,170 --> 00:06:55,137
‫Abfragezeichenfolge für den Benutzer aus, damit der

135
00:06:55,137 --> 00:06:57,650
‫Benutzer dies nicht selbst tun muss.

136
00:06:57,650 --> 00:06:59,083
‫Also, lassen Sie uns jetzt wirklich weitermachen und dies versuchen.

137
00:07:01,024 --> 00:07:03,683
‫Also kopiere ich das.

138
00:07:04,780 --> 00:07:06,003
‫Und hier sind es keine Touren.

139
00:07:09,380 --> 00:07:11,090
‫Es ist Top-5-Touren.

140
00:07:11,090 --> 00:07:14,463
‫Whoa, was ist hier los?

141
00:07:16,710 --> 00:07:18,620
‫Aus irgendeinem Grund wird

142
00:07:18,620 --> 00:07:21,960
‫diese Route nicht gefunden, also gehen wir zurück.

143
00:07:21,960 --> 00:07:23,360
‫Also Top-5-Touren.

144
00:07:23,360 --> 00:07:25,013
‫Und so, hier in der Route, ah, okay.

145
00:07:26,140 --> 00:07:28,720
‫Es heißt top-5-billig, also

146
00:07:28,720 --> 00:07:30,690
‫mein Fehler hier.

147
00:07:30,690 --> 00:07:32,093
‫Also, billig, schick es

148
00:07:33,440 --> 00:07:35,780
‫jetzt, und das ist immer noch nicht richtig.

149
00:07:35,780 --> 00:07:38,123
‫Oh ja.

150
00:07:40,030 --> 00:07:41,110
‫Die Touren muss ich natürlich noch hier einstellen.

151
00:07:41,110 --> 00:07:46,110
‫Wir befinden uns also in der Tourressource und der gesamte Router

152
00:07:46,140 --> 00:07:48,300
‫ist auf dieser Tourroute montiert.

153
00:07:48,300 --> 00:07:50,210
‫Denken Sie daran.

154
00:07:50,210 --> 00:07:53,670
‫Und so ist es in diesen Touren, dieser Art von

155
00:07:53,670 --> 00:07:55,430
‫Minianwendung, erinnern Sie sich

156
00:07:55,430 --> 00:07:58,140
‫daran, wo ich diese Top-5-günstige Route erstellt habe.

157
00:07:58,140 --> 00:08:00,723
‫Hoffen wir also, dass es jetzt funktioniert.

158
00:08:01,790 --> 00:08:03,470
‫Und das tut es tatsächlich.

159
00:08:03,470 --> 00:08:04,703
‫Also, das hat funktioniert, das ist fantastisch.

160
00:08:07,350 --> 00:08:11,030
‫Jetzt könnten wir hier natürlich noch viel

161
00:08:11,030 --> 00:08:15,090
‫mehr Alias-Routen machen, aber das ist nicht wirklich notwendig.

162
00:08:15,090 --> 00:08:16,740
‫Ich wollte Ihnen wirklich nur

163
00:08:16,740 --> 00:08:19,400
‫das Konzept zeigen, Ihnen zeigen, dass es ein nettes

164
00:08:19,400 --> 00:08:21,630
‫Feature sein kann, das zu jeder API hinzugefügt

165
00:08:21,630 --> 00:08:25,380
‫werden kann, und ich wollte Ihnen auch noch einmal die Leistungsfähigkeit von Middleware zeigen.

166
00:08:25,380 --> 00:08:27,933
‫Wir sprechen hier also von Mungo, aber dennoch ist

167
00:08:29,160 --> 00:08:30,950
‫es sehr wichtig, sich mit

168
00:08:30,950 --> 00:08:34,360
‫den Express-Konzepten vertraut zu machen, über die wir zuvor gesprochen haben.

169
00:08:34,360 --> 00:08:37,513
‫Wie auch immer, wir sind jetzt mit unseren API-Funktionen fertig.

170
00:08:39,040 --> 00:08:42,120
‫Im nächsten Video werden wir das alles

171
00:08:42,120 --> 00:08:44,950
‫schnell umgestalten, um den gesamten

172
00:08:44,950 --> 00:08:48,690
‫Code etwas modularer und natürlich besser zu machen.

