﻿1
00:00:00,980 --> 00:00:03,100
‫Kursleiter: In diesem Video möchte ich

2
00:00:03,100 --> 00:00:06,510
‫die API-Funktionen, die wir in den letzten Vorlesungen implementiert

3
00:00:06,510 --> 00:00:08,620
‫haben, ganz schnell umgestalten.

4
00:00:08,620 --> 00:00:11,760
‫Dies dient nicht nur dazu, unseren Code etwas sauberer zu

5
00:00:11,760 --> 00:00:15,000
‫machen, sondern auch, um ihn in Zukunft modularer und wiederverwendbarer

6
00:00:15,000 --> 00:00:15,913
‫zu machen.

7
00:00:17,290 --> 00:00:20,430
‫Im Moment haben wir also all diesen Code

8
00:00:20,430 --> 00:00:25,050
‫für die Funktionen, die wir zuvor in dieser getALLTours-Funktion erstellt haben, richtig?

9
00:00:25,050 --> 00:00:26,860
‫Und das sieht etwas chaotisch aus.

10
00:00:26,860 --> 00:00:30,160
‫Es ist ein bisschen schwer zu verstehen, okay?

11
00:00:30,160 --> 00:00:33,900
‫Und stellen Sie sich auch vor, wir wollten dieselben Funktionen für eine

12
00:00:33,900 --> 00:00:35,010
‫andere Ressource verwenden.

13
00:00:35,010 --> 00:00:38,250
‫Zum Beispiel für die Nutzer oder später für die Bewertungen.

14
00:00:38,250 --> 00:00:40,910
‫Es wäre im Grunde nicht sehr praktisch, den

15
00:00:40,910 --> 00:00:43,300
‫Code von hier zu kopieren und dann in

16
00:00:43,300 --> 00:00:45,670
‫den anderen Ressourcen richtig zu verwenden.

17
00:00:45,670 --> 00:00:47,360
‫Also erstelle ich jetzt

18
00:00:47,360 --> 00:00:50,340
‫eine Klasse, in der ich für jede

19
00:00:50,340 --> 00:00:54,070
‫dieser API-Features oder -Funktionalitäten, wie Sie sie auch nennen könnten,

20
00:00:54,070 --> 00:00:55,500
‫eine Methode hinzufüge.

21
00:00:55,500 --> 00:00:56,900
‫Gut?

22
00:00:56,900 --> 00:00:59,906
‫Also, lass uns das hier machen und ich

23
00:00:59,906 --> 00:01:02,950
‫werde es hier tun, für jetzt, später werde ich

24
00:01:02,950 --> 00:01:05,750
‫es tatsächlich in eine eigene Datei exportieren,

25
00:01:05,750 --> 00:01:08,810
‫im Grunde um ein wiederverwendbares Modul zu erstellen, das

26
00:01:08,810 --> 00:01:11,760
‫wir können , später in andere Controller importieren.

27
00:01:11,760 --> 00:01:12,960
‫Gut?

28
00:01:12,960 --> 00:01:16,663
‫Also, Klasse, und ich nenne es APIFeatures.

29
00:01:19,260 --> 00:01:20,093
‫Gut.

30
00:01:21,720 --> 00:01:24,510
‫Dann beginnen wir mit unserer Konstruktorfunktion

31
00:01:24,510 --> 00:01:26,840
‫und erinnern uns, dass dies

32
00:01:26,840 --> 00:01:29,990
‫die Funktion ist, die automatisch aufgerufen wird, sobald

33
00:01:29,990 --> 00:01:33,070
‫wir ein neues Objekt aus dieser Klasse erstellen.

34
00:01:33,070 --> 00:01:36,830
‫Was will ich nun eigentlich von diesen API-Features?

35
00:01:36,830 --> 00:01:41,090
‫Eigentlich werde ich hier zwei Variablen analysieren, okay?

36
00:01:41,090 --> 00:01:45,962
‫Also die Mungo-Abfrage und auch der queryString, den wir von

37
00:01:45,962 --> 00:01:47,323
‫Express bekommen.

38
00:01:48,410 --> 00:01:51,420
‫Also, im Grunde genommen von der Route her, in Ordnung.

39
00:01:51,420 --> 00:01:53,490
‫Darauf haben wir normalerweise Zugriff

40
00:01:53,490 --> 00:01:56,760
‫in der req. abfragen, ok.

41
00:01:56,760 --> 00:01:59,780
‫Jetzt übergebe ich die Abfrage hier wieder, weil ich

42
00:01:59,780 --> 00:02:03,110
‫keine Abfrage innerhalb dieser Klasse durchführen möchte, da dies diese

43
00:02:03,110 --> 00:02:06,040
‫Klasse dann an die Tourressource weiterleiten würde, aber ich

44
00:02:06,040 --> 00:02:08,903
‫möchte, dass diese so wiederverwendbar wie möglich ist.

45
00:02:10,690 --> 00:02:11,523
‫Gut.

46
00:02:11,523 --> 00:02:14,080
‫Was wir in dieser Konstruktorfunktion normalerweise

47
00:02:14,080 --> 00:02:18,490
‫tun, ist dies zu sagen. query entspricht der Abfrage, die wir als Argument

48
00:02:18,490 --> 00:02:21,480
‫erhalten haben, und dann dies. queryString

49
00:02:25,130 --> 00:02:27,890
‫ist gleich queryString.

50
00:02:27,890 --> 00:02:28,723
‫Okay?

51
00:02:28,723 --> 00:02:32,490
‫Also sehr einfache, sehr typische Konstruktorfunktion.

52
00:02:32,490 --> 00:02:35,580
‫Und jetzt werde ich, wie bereits erwähnt,

53
00:02:35,580 --> 00:02:39,313
‫eine Methode für jede der Funktionen erstellen, beginnend mit Filter.

54
00:02:41,860 --> 00:02:42,693
‫Gut.

55
00:02:42,693 --> 00:02:46,490
‫Also, lassen Sie uns jetzt fortfahren und den Code von hier aus schneiden.

56
00:02:46,490 --> 00:02:49,130
‫Oder tatsächlich, ich werde es kopieren und

57
00:02:49,130 --> 00:02:52,180
‫sie kommentieren es, damit ich keinen versehentlichen Schaden anrichte.

58
00:02:52,180 --> 00:02:53,710
‫Also, kopiere den Kommentar

59
00:02:55,350 --> 00:02:57,120
‫und füge ihn hier ein.

60
00:02:57,120 --> 00:02:59,450
‫Also, ein paar Dinge, die wir ändern müssen.

61
00:02:59,450 --> 00:03:03,350
‫Zuerst auf Anfrage. query wird innerhalb dieser Klasse

62
00:03:03,350 --> 00:03:04,830
‫nicht verfügbar sein.

63
00:03:04,830 --> 00:03:07,250
‫Aus diesem Grund haben wir den queryString tatsächlich geparst.

64
00:03:07,250 --> 00:03:09,930
‫Und so wird das hier durch dieses

65
00:03:09,930 --> 00:03:11,623
‫ersetzt. AbfrageString.

66
00:03:13,490 --> 00:03:14,323
‫Okay?

67
00:03:14,323 --> 00:03:16,450
‫Dies ist also wieder nur grundlegendes Javascript.

68
00:03:16,450 --> 00:03:20,260
‫Hat eigentlich gar nichts mit Note oder Express zu tun.

69
00:03:20,260 --> 00:03:24,760
‫Dann ist der Rest hier okay, aber das hier ist überhaupt nicht okay.

70
00:03:24,760 --> 00:03:29,340
‫Ich möchte die Tour also nicht direkt hier abfragen, denkt daran, sondern ich

71
00:03:29,340 --> 00:03:32,170
‫möchte diesen Fund jetzt einfach zu der

72
00:03:32,170 --> 00:03:34,650
‫Abfrage hinzufügen, die wir bereits haben.

73
00:03:34,650 --> 00:03:37,147
‫Also das. Anfrage. finden

74
00:03:40,560 --> 00:03:43,763
‫und so, das wird dann das sein.

75
00:03:45,010 --> 00:03:45,860
‫Gut?

76
00:03:45,860 --> 00:03:47,800
‫Lass uns das jetzt loswerden.

77
00:03:47,800 --> 00:03:50,370
‫Und bevor wir hier weitere Methoden hinzufügen,

78
00:03:50,370 --> 00:03:52,870
‫lassen Sie uns diese Klasse verwenden, damit

79
00:03:52,870 --> 00:03:54,833
‫dies für Sie sinnvoller ist.

80
00:03:55,700 --> 00:03:56,533
‫Okay?

81
00:03:56,533 --> 00:03:58,653
‫Also, wie soll das eigentlich funktionieren?

82
00:03:59,890 --> 00:04:02,400
‫Und ich werde alles hier am Ende

83
00:04:02,400 --> 00:04:04,420
‫hier unter Execute Query machen.

84
00:04:04,420 --> 00:04:05,350
‫Gut?

85
00:04:05,350 --> 00:04:07,750
‫Also kann ich jetzt zum Beispiel eine

86
00:04:07,750 --> 00:04:09,583
‫Variable namens Features erstellen.

87
00:04:12,450 --> 00:04:17,300
‫Und dann erstelle ich von hier aus ein neues API-Feature-Objekt.

88
00:04:17,300 --> 00:04:18,160
‫Okay?

89
00:04:18,160 --> 00:04:21,560
‫Im Grunde also das Erstellen einer Instanz dieser API-Features,

90
00:04:21,560 --> 00:04:23,870
‫die dann in Features gespeichert werden.

91
00:04:23,870 --> 00:04:26,600
‫Und hier haben wir dann Zugriff auf

92
00:04:26,600 --> 00:04:29,380
‫alle Methoden, die wir in der Klassendefinition definieren werden.

93
00:04:29,380 --> 00:04:30,360
‫Okay?

94
00:04:30,360 --> 00:04:33,490
‫Denken Sie also daran, dass wir hier eine Abfrage und

95
00:04:33,490 --> 00:04:34,980
‫den queryString übergeben müssen.

96
00:04:34,980 --> 00:04:36,983
‫Also, die Abfrage, wie erstellen wir eine?

97
00:04:38,440 --> 00:04:41,580
‫Denken Sie daran, es ist Tour. finden.

98
00:04:41,580 --> 00:04:45,040
‫Es gibt also ein Abfrageobjekt und das ist dasjenige, das

99
00:04:45,040 --> 00:04:48,010
‫wir in diese Klasse geparst haben und dann natürlich

100
00:04:48,010 --> 00:04:52,410
‫den queryString, der req ist. Anfrage.

101
00:04:52,410 --> 00:04:54,990
‫Okay, zu diesen Funktionen hier, denken Sie daran, dass

102
00:04:54,990 --> 00:04:57,160
‫wir keinen Zugriff auf Filter haben.

103
00:04:57,160 --> 00:05:00,153
‫Und so lassen Sie es uns im Nachhinein gleich hier setzen.

104
00:05:01,410 --> 00:05:04,070
‫So, . Filter.

105
00:05:04,070 --> 00:05:05,570
‫Sparen Sie.

106
00:05:05,570 --> 00:05:07,750
‫Und so werden

107
00:05:07,750 --> 00:05:10,550
‫wir die API-Filterfunktionalität ausführen oder codieren.

108
00:05:10,550 --> 00:05:12,760
‫Dann funktioniert hier die nächste Zeile

109
00:05:12,760 --> 00:05:14,970
‫natürlich nicht, weil diese Abfrage hier

110
00:05:14,970 --> 00:05:16,670
‫nicht mehr existiert.

111
00:05:16,670 --> 00:05:20,947
‫Stattdessen haben wir jetzt Funktionen. abfragen, oder?

112
00:05:22,760 --> 00:05:24,960
‫Also nach all dieser Verarbeitung jetzt im Grunde.

113
00:05:26,040 --> 00:05:29,530
‫Okay, also jetzt, nach diesem Filter, das hier. query enthält

114
00:05:29,530 --> 00:05:32,500
‫dann diese neue find-Methode.

115
00:05:32,500 --> 00:05:37,310
‫Okay, und das wird dann wieder in diesem gespeichert. Anfrage.

116
00:05:37,310 --> 00:05:39,910
‫Und später werden wir all diese anderen Methoden haben, die

117
00:05:39,910 --> 00:05:41,930
‫alle dies manipulieren. Abfrage, damit

118
00:05:42,886 --> 00:05:45,729
‫am Ende dies. query ist die

119
00:05:45,729 --> 00:05:47,620
‫Abfrage, die wir ausführen möchten.

120
00:05:47,620 --> 00:05:48,793
‫Also genau wie hier.

121
00:05:49,920 --> 00:05:53,800
‫Okay, genau wie hier haben wir die Abfragevariable

122
00:05:53,800 --> 00:05:55,130
‫immer manipuliert.

123
00:05:55,130 --> 00:05:57,460
‫Wir fügten ihm immer mehr Methoden hinzu,

124
00:05:57,460 --> 00:06:00,100
‫bis wir es dann am Ende ausgeführt haben.

125
00:06:00,100 --> 00:06:02,530
‫Und hier machen wir genau dasselbe.

126
00:06:02,530 --> 00:06:05,910
‫Wir verschieben den Code einfach in all diese Methoden.

127
00:06:05,910 --> 00:06:06,743
‫Okay?

128
00:06:06,743 --> 00:06:09,900
‫Am Ende wird die Abfrage dann, wie gesagt,

129
00:06:09,900 --> 00:06:13,290
‫in dieser Eigenschaft hier gespeichert und so, ja, dort warten

130
00:06:13,290 --> 00:06:14,800
‫wir dann und erhalten

131
00:06:14,800 --> 00:06:16,093
‫die Ergebnisse zurück.

132
00:06:17,360 --> 00:06:18,220
‫Gut?

133
00:06:18,220 --> 00:06:21,763
‫Wie auch immer, lassen Sie uns hier weitermachen und die Sortierung implementieren.

134
00:06:22,730 --> 00:06:24,913
‫Also kopiere und kommentiere ich.

135
00:06:27,300 --> 00:06:32,003
‫Also, filtern und das nächste heißt Sortieren.

136
00:06:34,030 --> 00:06:35,160
‫Gut.

137
00:06:35,160 --> 00:06:38,510
‫Und so müssen wir auch hier die Anfrage ersetzen. mit diesem

138
00:06:38,510 --> 00:06:41,013
‫abfragen. queryString, okay.

139
00:06:43,455 --> 00:06:46,288
‫Und dann ist Abfrage jetzt das. Anfrage.

140
00:06:47,510 --> 00:06:52,383
‫Also lass uns diese vier hier reinbringen. Anfrage.

141
00:06:56,540 --> 00:06:59,950
‫Okay, das Ziel hier ist es,

142
00:06:59,950 --> 00:07:03,380
‫diese Methoden hier im Grunde nacheinander zu verketten.

143
00:07:03,380 --> 00:07:05,340
‫Also lass mich dir das hier zeigen.

144
00:07:05,340 --> 00:07:08,262
‫Wir haben also Filter und danach wollen

145
00:07:08,262 --> 00:07:10,253
‫wir die Sortiermethode verketten.

146
00:07:12,730 --> 00:07:15,820
‫Im Moment wird das nicht wirklich

147
00:07:15,820 --> 00:07:20,110
‫funktionieren, denn wo ketten wir diese Art eigentlich an?

148
00:07:20,110 --> 00:07:24,170
‫Im Grunde versuchen wir es also auf das Ergebnis zurückzuführen,

149
00:07:24,170 --> 00:07:27,120
‫aber was ist jetzt das Ergebnis?

150
00:07:27,120 --> 00:07:29,840
‫Nun, es ist nicht wirklich etwas,

151
00:07:29,840 --> 00:07:32,840
‫weil diese Filtermethode hier nichts zurückgibt, oder?

152
00:07:32,840 --> 00:07:35,460
‫Nun, dieser Code hier gibt

153
00:07:35,460 --> 00:07:38,830
‫natürlich das soeben erstellte Objekt zurück, und

154
00:07:38,830 --> 00:07:41,560
‫wir können die Filtermethode darauf verketten.

155
00:07:41,560 --> 00:07:44,460
‫Aber die Filtermethode wiederum gibt nichts zurück.

156
00:07:44,460 --> 00:07:47,910
‫An diesem Punkt können wir das Objekt also nicht

157
00:07:47,910 --> 00:07:49,630
‫wirklich sortieren, oder?

158
00:07:49,630 --> 00:07:51,510
‫Die einfache Lösung dafür, und

159
00:07:51,510 --> 00:07:55,033
‫vielleicht haben Sie dies schon einmal in Ihrem Code getan, besteht

160
00:07:56,520 --> 00:07:58,853
‫darin, dass wir dies jetzt zurückgeben müssen.

161
00:08:01,120 --> 00:08:06,103
‫Also, gib das zurück und das ist einfach das gesamte Objekt, okay?

162
00:08:07,252 --> 00:08:09,723
‫Und das gleiche dann hier unten.

163
00:08:11,790 --> 00:08:13,570
‫Also, gib das zurück.

164
00:08:13,570 --> 00:08:17,360
‫Um wieder das gesamte Objekt zurückzugeben, das dann natürlich Zugriff

165
00:08:17,360 --> 00:08:20,530
‫auf diese anderen Methoden hat, damit wir sie

166
00:08:20,530 --> 00:08:22,493
‫dann dort aufrufen können.

167
00:08:23,610 --> 00:08:24,443
‫Gut?

168
00:08:25,690 --> 00:08:28,643
‫Als nächstes steht also die Begrenzung an.

169
00:08:34,000 --> 00:08:36,150
‫Und ich werde das hier limitFields nennen.

170
00:08:39,680 --> 00:08:41,340
‫Und das liegt daran, dass

171
00:08:41,340 --> 00:08:43,710
‫alle diese Methoden diese Verben als Namen haben.

172
00:08:43,710 --> 00:08:47,240
‫Es heißt also filtern, sortieren, begrenzen, und die Paginierung

173
00:08:47,240 --> 00:08:48,640
‫ist die nächste.

174
00:08:49,870 --> 00:08:53,730
‫Also wieder req. Abfrage ist jetzt das. queryString und query

175
00:08:57,649 --> 00:09:00,399
‫here ist jetzt das. Anfrage.

176
00:09:04,494 --> 00:09:05,327
‫Gut?

177
00:09:08,196 --> 00:09:11,196
‫Senden Sie dies zurück und dies ist nicht korrekt.

178
00:09:14,290 --> 00:09:17,123
‫Okay, und schließlich die Paginierung.

179
00:09:18,490 --> 00:09:19,873
‫Kopieren, kommentieren.

180
00:09:25,020 --> 00:09:26,413
‫Also, paginieren.

181
00:09:29,770 --> 00:09:31,650
‫Geben Sie dies zurück und natürlich müssen

182
00:09:31,650 --> 00:09:39,187
‫wir diese Anforderungen ersetzen. diese abfragen.

183
00:09:39,187 --> 00:09:39,187
‫AbfrageString.

184
00:09:39,187 --> 00:09:41,610
‫Und dann wird es hier, genau

185
00:09:41,610 --> 00:09:44,890
‫wie zuvor, so sein. Anfrage.

186
00:09:44,890 --> 00:09:47,770
‫Und mir ist gerade klar geworden, dass wir

187
00:09:47,770 --> 00:09:51,040
‫das hier oben, gleich bei der ersten Methode, nicht gemacht haben.

188
00:09:51,040 --> 00:09:54,560
‫Also haben wir das einfach gesagt. Abfrage und

189
00:09:54,560 --> 00:09:57,080
‫fügte dort den Fund hinzu.

190
00:09:57,080 --> 00:09:59,190
‫Aber dann müssen wir

191
00:09:59,190 --> 00:10:01,700
‫es natürlich in dieser Abfrageeigenschaft speichern.

192
00:10:01,700 --> 00:10:03,593
‫Okay, und das habe ich vergessen.

193
00:10:04,650 --> 00:10:06,610
‫Und wir haben hier einen Fehler.

194
00:10:06,610 --> 00:10:08,280
‫Okay, das spielt hier im

195
00:10:08,280 --> 00:10:09,690
‫Moment keine Rolle.

196
00:10:09,690 --> 00:10:13,170
‫Oder tatsächlich, weil diese Codezeile hier tatsächlich

197
00:10:13,170 --> 00:10:15,910
‫in unserer paginate-Methode enthalten ist.

198
00:10:15,910 --> 00:10:17,490
‫Also lass uns dorthin gehen.

199
00:10:17,490 --> 00:10:19,720
‫Und eigentlich wollte ich hier mit

200
00:10:19,720 --> 00:10:21,210
‫Ihnen darüber sprechen.

201
00:10:21,210 --> 00:10:24,350
‫Denn wenn Sie darüber nachdenken, ist das Anfordern

202
00:10:24,350 --> 00:10:27,740
‫der nächsten Seite, die kein Ergebnis hat, kein wirklicher Fehler.

203
00:10:27,740 --> 00:10:30,852
‫Die Tatsache, dass keine Ergebnisse vorliegen, reicht für

204
00:10:30,852 --> 00:10:34,900
‫den Nutzer aus, um zu erkennen, dass die aufgerufene Seite

205
00:10:34,900 --> 00:10:36,660
‫grundsätzlich keine Daten enthält.

206
00:10:36,660 --> 00:10:39,450
‫Wir brauchen in dieser Situation also nicht wirklich einen Fehler.

207
00:10:39,450 --> 00:10:42,933
‫Und so werde ich einfach weitermachen und diesen ganzen Code löschen.

208
00:10:43,940 --> 00:10:45,430
‫Okay?

209
00:10:45,430 --> 00:10:47,600
‫Also lass es mich jetzt hier speichern.

210
00:10:47,600 --> 00:10:49,963
‫Damit ist der Fehler jetzt natürlich weg.

211
00:10:53,800 --> 00:10:56,950
‫Und auch hier müssen wir diese anderen

212
00:10:56,950 --> 00:10:58,770
‫Methoden noch immer hinzufügen.

213
00:10:58,770 --> 00:11:02,577
‫Also limitFields und . paginieren.

214
00:11:05,160 --> 00:11:09,360
‫Speichern Sie es und denken Sie noch einmal daran, dass diese ganze

215
00:11:09,360 --> 00:11:12,180
‫Verkettung hier nur funktioniert, weil wir

216
00:11:12,180 --> 00:11:15,420
‫nach dem Aufrufen jeder dieser Methoden immer dies zurückgeben.

217
00:11:15,420 --> 00:11:18,800
‫Und dies ist das Objekt selbst, das Zugriff auf jede

218
00:11:18,800 --> 00:11:21,410
‫dieser Methoden hier hat, wodurch es möglich

219
00:11:21,410 --> 00:11:24,640
‫ist, sie so zu verketten, wie wir es hier haben.

220
00:11:24,640 --> 00:11:26,860
‫Okay, um es noch

221
00:11:26,860 --> 00:11:31,040
‫einmal zusammenzufassen: Wir erstellen ein neues Objekt der API-Feature-Class.

222
00:11:31,040 --> 00:11:33,960
‫Darin analysieren wir ein Abfrageobjekt

223
00:11:33,960 --> 00:11:37,240
‫und die Abfragezeichenfolge, die von Express kommt.

224
00:11:37,240 --> 00:11:38,400
‫Okay?

225
00:11:38,400 --> 00:11:41,180
‫Dann manipulieren wir in jeder dieser vier

226
00:11:41,180 --> 00:11:44,400
‫Methoden hier, die wir nacheinander aufrufen, im Grunde die Abfrage.

227
00:11:44,400 --> 00:11:48,010
‫Wir fügen ihr immer mehr Methoden hinzu, genau wie wir

228
00:11:48,010 --> 00:11:52,160
‫es hier oben getan haben, bevor wir diese Umgestaltungen vorgenommen haben, richtig.

229
00:11:52,160 --> 00:11:55,900
‫Wir fügen der Abfrage hier also bis zum Ende weitere

230
00:11:55,900 --> 00:11:59,040
‫Dinge hinzu und warten dann am Ende einfach auf

231
00:11:59,040 --> 00:12:02,070
‫das Ergebnis dieser Abfrage, damit sie mit allen

232
00:12:02,070 --> 00:12:04,210
‫ausgewählten Dokumenten zurückkommen kann, okay?

233
00:12:04,210 --> 00:12:06,580
‫Und diese Abfrage lebt jetzt bei Features,

234
00:12:06,580 --> 00:12:08,640
‫die dieses Objekt hier sind.

235
00:12:08,640 --> 00:12:10,123
‫Also Funktionen. Anfrage.

236
00:12:11,330 --> 00:12:13,620
‫Okay, ich hoffe das macht Sinn.

237
00:12:13,620 --> 00:12:17,960
‫Bevor wir also etwas anderes tun, gehen wir zurück zu Postman

238
00:12:17,960 --> 00:12:20,090
‫und probieren es tatsächlich aus.

239
00:12:20,090 --> 00:12:23,500
‫Und wir können es gleich hier mit dieser Top-5-günstigen

240
00:12:23,500 --> 00:12:25,650
‫Route ausprobieren, weil sie

241
00:12:25,650 --> 00:12:29,030
‫hinter den Kulissen alle diese API-Funktionen verwendet, richtig.

242
00:12:29,030 --> 00:12:32,240
‫Also, wenn ich es schicke, funktioniert es immer noch.

243
00:12:32,240 --> 00:12:33,763
‫Das ist also fantastisch.

244
00:12:34,730 --> 00:12:38,823
‫Also schließen wir es und lassen Sie mich es hier speichern.

245
00:12:40,490 --> 00:12:44,453
‫Holen Sie sich also die fünf günstigsten Touren.

246
00:12:49,220 --> 00:12:51,370
‫Und ja, ich werde es am Ende dabei belassen.

247
00:12:51,370 --> 00:12:53,763
‫Und jetzt, gerade hier, lassen Sie uns einige Tests durchführen.

248
00:12:54,790 --> 00:12:58,373
‫Entfernen Sie beispielsweise die Sortierung, lassen Sie mich das Limit verlassen.

249
00:12:59,570 --> 00:13:02,260
‫Schwierigkeit, Dauer, Preis.

250
00:13:02,260 --> 00:13:04,170
‫Also lasse ich das alles hier,

251
00:13:04,170 --> 00:13:06,620
‫nur um zu sehen, ob es noch funktioniert.

252
00:13:06,620 --> 00:13:10,590
‫Und es sieht so aus, als ob alles noch funktioniert, richtig.

253
00:13:10,590 --> 00:13:13,110
‫Dies sind also genau die gleichen Ergebnisse, die

254
00:13:13,110 --> 00:13:15,500
‫wir vor unserem Refactoring erhalten haben.

255
00:13:15,500 --> 00:13:17,320
‫Also super, perfekt.

256
00:13:17,320 --> 00:13:20,530
‫Das hat funktioniert und so löschen wir jetzt

257
00:13:20,530 --> 00:13:23,950
‫tatsächlich den ganzen Code von hier, der unseren Route-Handler

258
00:13:23,950 --> 00:13:26,410
‫so viel sauberer macht, nicht wahr?

259
00:13:26,410 --> 00:13:30,840
‫Also, das ist so viel besser, wirklich, es ist Tag und Nacht.

260
00:13:30,840 --> 00:13:31,800
‫Okay?

261
00:13:31,800 --> 00:13:34,210
‫Der nächste Schritt besteht nun darin,

262
00:13:34,210 --> 00:13:38,500
‫diesen ganzen Code zu nehmen, ihn auszuschneiden und in eine neue Datei,

263
00:13:38,500 --> 00:13:41,700
‫also im Grunde ein neues Modul, zu legen.

264
00:13:41,700 --> 00:13:44,720
‫Okay, und dafür werde ich hier einen neuen Ordner

265
00:13:44,720 --> 00:13:46,563
‫erstellen, den ich Utils nenne.

266
00:13:47,420 --> 00:13:49,713
‫Das steht also im Grunde für Versorgungsunternehmen.

267
00:13:51,010 --> 00:13:53,850
‫Und ich werde hier im weiteren Verlauf des Kurses

268
00:13:53,850 --> 00:13:55,503
‫ein paar Dinge hinzufügen.

269
00:13:57,060 --> 00:13:57,893
‫Okay?

270
00:13:57,893 --> 00:14:00,050
‫Dieser wird

271
00:14:00,050 --> 00:14:05,050
‫also APIFeatures heißen. js und mit einem großen F hier.

272
00:14:09,430 --> 00:14:10,263
‫Gut?

273
00:14:10,263 --> 00:14:13,621
‫Also, hier geht unsere Klasse und am Ende

274
00:14:13,621 --> 00:14:17,823
‫machen wir ein Modul. Exporte dieser Klasse.

275
00:14:20,040 --> 00:14:21,800
‫Also an dieser Stelle nichts Neues.

276
00:14:21,800 --> 00:14:24,140
‫Speichern Sie es, schließen Sie es,

277
00:14:24,140 --> 00:14:27,073
‫und jetzt können wir es hier drinnen anfordern.

278
00:14:28,147 --> 00:14:30,730
‫Const APIFeatures erfordern dann.

279
00:14:35,980 --> 00:14:38,490
‫Dann müssen wir einen Ordner

280
00:14:38,490 --> 00:14:41,613
‫nach oben verschieben, dann in Utils und APIFeatures.

281
00:14:43,110 --> 00:14:44,210
‫Okay?

282
00:14:44,210 --> 00:14:45,313
‫Noch ein Test.

283
00:14:48,010 --> 00:14:51,000
‫Und es dauert einige Zeit, und los geht's.

284
00:14:51,000 --> 00:14:53,760
‫Schön, das ist wirklich einfach schön.

285
00:14:53,760 --> 00:14:57,720
‫Wenn wir jetzt erneut eine andere Ressource erstellen, zum

286
00:14:57,720 --> 00:15:00,280
‫Beispiel für die Benutzer, ist es

287
00:15:00,280 --> 00:15:02,630
‫so einfach, dieselbe Funktionalität einzufügen.

288
00:15:02,630 --> 00:15:06,110
‫Alles, was wir tun müssen, ist, diese Datei anzufordern und dann

289
00:15:06,110 --> 00:15:08,680
‫im Grunde dasselbe wie hier zu tun.

290
00:15:08,680 --> 00:15:11,000
‫Oder vielleicht möchten wir in

291
00:15:11,000 --> 00:15:14,040
‫diesem Fall nicht einmal diese Sortierfähigkeit oder

292
00:15:14,040 --> 00:15:17,140
‫die Filterfähigkeit haben, und dann müssen wir

293
00:15:17,140 --> 00:15:19,440
‫nur diese Codezeile herausnehmen.

294
00:15:19,440 --> 00:15:21,680
‫Und dann, wie von Zauberhand, werden

295
00:15:21,680 --> 00:15:23,280
‫nur diese drei

296
00:15:23,280 --> 00:15:25,810
‫Funktionen oder diese drei Funktionen ausgeführt, okay.

297
00:15:25,810 --> 00:15:27,890
‫Und das ist wirklich großartig.

298
00:15:27,890 --> 00:15:29,630
‫Ich hoffe, Sie können den

299
00:15:29,630 --> 00:15:33,353
‫Wert davon erkennen und, ja, ich bin wirklich zufrieden mit diesem Ergebnis.

