﻿1
00:00:00,980 --> 00:00:02,760
‫Kursleiter: In Ordnung, in diesem

2
00:00:02,760 --> 00:00:04,720
‫Vortrag werden wir über sogenannte verschachtelte

3
00:00:04,720 --> 00:00:06,910
‫Routen sprechen, was sie sind, warum

4
00:00:06,910 --> 00:00:08,690
‫wir sie brauchen und

5
00:00:08,690 --> 00:00:11,163
‫wie wir sie tatsächlich in Express implementieren können.

6
00:00:12,944 --> 00:00:15,470
‫Überlegen wir kurz, wie wir in

7
00:00:15,470 --> 00:00:18,566
‫der Praxis eigentlich eine neue Rezension erstellen wollen.

8
00:00:18,566 --> 00:00:21,520
‫Bis zu diesem Zeitpunkt haben wir beim Erstellen

9
00:00:21,520 --> 00:00:24,020
‫neuer Bewertungen immer die Tour-ID

10
00:00:24,020 --> 00:00:26,920
‫und die Benutzer-ID manuell in den Anfragetext

11
00:00:26,920 --> 00:00:30,300
‫übergeben und dann die Bewertung von dort aus erstellt.

12
00:00:30,300 --> 00:00:33,180
‫Während der Entwicklung ist das in Ordnung, aber so

13
00:00:33,180 --> 00:00:34,980
‫wird eine Rezension in der realen

14
00:00:34,980 --> 00:00:36,433
‫Welt natürlich nicht erstellt.

15
00:00:37,680 --> 00:00:40,610
‫In der Realität sollte die

16
00:00:40,610 --> 00:00:44,010
‫Benutzer-ID also idealerweise vom aktuell angemeldeten Benutzer

17
00:00:44,010 --> 00:00:47,740
‫und eine Tour-ID von der aktuellen Tour stammen.

18
00:00:47,740 --> 00:00:49,700
‫Das sollte idealerweise direkt in der

19
00:00:49,700 --> 00:00:51,877
‫Route, also in der URL, kodiert werden.

20
00:00:53,020 --> 00:00:56,300
‫Wenn Sie eine Post-Anfrage für eine neue Überprüfung

21
00:00:56,300 --> 00:01:00,140
‫senden, möchten wir diese an eine URL wie diese senden.

22
00:01:00,140 --> 00:01:03,143
‫Schreiben wir das hier nur als Kommentar auf.

23
00:01:05,826 --> 00:01:08,869
‫Idealerweise möchten wir eine Anfrage

24
00:01:08,869 --> 00:01:13,869
‫für Post, für Tour und die ID der Tour stellen,

25
00:01:15,490 --> 00:01:19,343
‫hier spielt es keine Rolle, und dann Bewertungen.

26
00:01:20,650 --> 00:01:23,100
‫Okay, jetzt haben wir also einfach

27
00:01:23,100 --> 00:01:25,580
‫die Tour-ID direkt in der URL

28
00:01:25,580 --> 00:01:28,030
‫und die Benutzer-ID kommt dann auch

29
00:01:28,030 --> 00:01:29,913
‫vom aktuell angemeldeten Benutzer.

30
00:01:31,130 --> 00:01:35,330
‫Was wir hier sehen, ist nun eine sogenannte verschachtelte Route.

31
00:01:35,330 --> 00:01:37,330
‫Sie sind sehr sinnvoll,

32
00:01:37,330 --> 00:01:40,570
‫wenn eine klare Eltern-Kind-Beziehung zwischen Ressourcen besteht.

33
00:01:40,570 --> 00:01:43,840
‫Das ist hier eindeutig der Fall, richtig.

34
00:01:43,840 --> 00:01:47,530
‫Bewertungen sind eindeutig ein Kind der Tour.

35
00:01:47,530 --> 00:01:49,320
‫Diese verschachtelte Route

36
00:01:49,320 --> 00:01:51,580
‫bedeutet im Grunde genommen,

37
00:01:51,580 --> 00:01:54,810
‫auf die Bewertungsressource der Tourressource zuzugreifen.

38
00:01:54,810 --> 00:01:57,420
‫Auf die gleiche Weise wollen wir eigentlich

39
00:01:57,420 --> 00:02:01,193
‫auch auf die Bewertungen einer bestimmten Tour auf die gleiche Weise zugreifen.

40
00:02:02,310 --> 00:02:05,560
‫Nehmen wir an, dann eine

41
00:02:05,560 --> 00:02:09,650
‫Get-Anfrage und noch einmal für Tour-Slash-Tour-ID und Slash-Reviews.

42
00:02:09,650 --> 00:02:11,390
‫Dies würde uns dann

43
00:02:11,390 --> 00:02:13,583
‫idealerweise alle Bewertungen für diese Tour besorgen.

44
00:02:14,970 --> 00:02:17,110
‫Wir könnten noch weiter gehen

45
00:02:17,110 --> 00:02:19,653
‫und auch die ID der Bewertung angeben.

46
00:02:21,840 --> 00:02:24,490
‫Also wieder nur eine zufällige Zeichenfolge, aber Sie verstehen,

47
00:02:24,490 --> 00:02:25,703
‫worauf es ankommt.

48
00:02:26,643 --> 00:02:28,550
‫In diesem Fall würden wir mit

49
00:02:28,550 --> 00:02:30,420
‫der ID diese hier auf

50
00:02:30,420 --> 00:02:32,603
‫der Tour mit dieser ID überprüfen lassen.

51
00:02:34,140 --> 00:02:36,520
‫Darum geht es bei verschachtelten Routen.

52
00:02:36,520 --> 00:02:40,220
‫Dies ist eine viel einfachere Möglichkeit, die Funktionsweise

53
00:02:40,220 --> 00:02:44,795
‫der API für unsere API-Benutzer zu lesen und zu verstehen.

54
00:02:44,795 --> 00:02:47,130
‫Es ist viel einfacher, als

55
00:02:47,130 --> 00:02:50,100
‫mit Abfragezeichenfolgen und all dem Zeug herumzuspielen.

56
00:02:50,100 --> 00:02:52,580
‫Außerdem zeigt es wirklich,

57
00:02:52,580 --> 00:02:55,850
‫wie es diese klare Beziehung zwischen diesen

58
00:02:55,850 --> 00:02:58,610
‫Ressourcen, Bewertungen und Touren gibt.

59
00:02:58,610 --> 00:03:00,410
‫Okay, aber genug geredet.

60
00:03:00,410 --> 00:03:02,510
‫Lassen Sie uns dies nun tatsächlich

61
00:03:02,510 --> 00:03:04,600
‫implementieren, beginnend mit der Post-Route.

62
00:03:04,600 --> 00:03:08,100
‫Da die Route nun eigentlich mit Touren beginnt, wird

63
00:03:08,100 --> 00:03:11,150
‫sie natürlich auf unseren Tourenrouter umgeleitet.

64
00:03:11,150 --> 00:03:14,600
‫Wir werden diese Funktionalität zumindest vorerst im Tourrouter

65
00:03:14,600 --> 00:03:16,890
‫implementieren müssen, auch wenn dies

66
00:03:16,890 --> 00:03:19,530
‫etwas kontraintuitiv erscheint, da es sich

67
00:03:19,530 --> 00:03:21,793
‫tatsächlich um Bewertungen handelt.

68
00:03:23,190 --> 00:03:26,650
‫Aber lassen Sie es uns jetzt noch einmal so implementieren.

69
00:03:26,650 --> 00:03:29,690
‫Wir kommen zu unserem Benutzerrouter und zuerst

70
00:03:32,040 --> 00:03:33,550
‫müssen wir, da

71
00:03:33,550 --> 00:03:34,870
‫wir hier

72
00:03:34,870 --> 00:03:37,483
‫Bewertungen verwenden, den Bewertungscontroller importieren.

73
00:03:42,370 --> 00:03:46,140
‫Controller erfordern.

74
00:03:46,140 --> 00:03:49,763
‫Vielleicht hätte ich einfach die Zeile von vorher kopieren sollen.

75
00:03:52,080 --> 00:03:55,693
‫Controller und Review-Controller.

76
00:03:57,380 --> 00:04:01,010
‫In Ordnung, jetzt hier ganz unten, und holen wir

77
00:04:01,010 --> 00:04:02,730
‫uns unseren Code für

78
00:04:02,730 --> 00:04:04,970
‫dieses Beispiel von hier nur

79
00:04:08,100 --> 00:04:09,223
‫als Referenz.

80
00:04:13,518 --> 00:04:15,750
‫Damit wir es jetzt auch tatsächlich umsetzen können.

81
00:04:15,750 --> 00:04:18,910
‫Die Route, die wir hier

82
00:04:20,960 --> 00:04:24,673
‫implementieren werden, ist Slash ID und dann Reviews.

83
00:04:26,240 --> 00:04:28,600
‫In diesem Tourteil hier haben wir, wie

84
00:04:28,600 --> 00:04:30,457
‫Sie bereits wissen, diesen

85
00:04:30,457 --> 00:04:33,300
‫Router montiert und müssen ihn daher hier nicht wiederholen.

86
00:04:33,300 --> 00:04:37,090
‫Aber dann haben wir die Tour-ID und dann die Bewertungen.

87
00:04:37,090 --> 00:04:38,590
‫Um dies wirklich zu verdeutlichen,

88
00:04:38,590 --> 00:04:40,440
‫nennen wir es eigentlich Tour-ID, da wir

89
00:04:42,850 --> 00:04:44,040
‫es hier mit

90
00:04:44,040 --> 00:04:45,440
‫anderen Ressourcen zu tun haben.

91
00:04:45,440 --> 00:04:48,363
‫Es ist also etwas klarer, es wirklich so zu nennen, wie es ist.

92
00:04:52,885 --> 00:04:55,844
‫Wir wollen nun den Create-Review implementieren.

93
00:04:55,844 --> 00:04:58,094
‫Authcontroller-Punktschutz.

94
00:05:00,960 --> 00:05:04,403
‫Wir möchten auch den Zugriff nur

95
00:05:11,472 --> 00:05:15,805
‫auf Benutzer beschränken, und dann erstellt unser Überprüfungscontroller

96
00:05:19,740 --> 00:05:22,033
‫natürlich keine Überprüfung.

97
00:05:22,980 --> 00:05:26,000
‫Auch hier ist es etwas seltsam und

98
00:05:26,000 --> 00:05:28,880
‫kontraintuitiv, den Review-Controller hier in der

99
00:05:28,880 --> 00:05:30,593
‫Benutzerroute tatsächlich aufzurufen.

100
00:05:31,620 --> 00:05:34,273
‫Nun, eigentlich sollte es nicht in der Benutzerroute sein.

101
00:05:35,200 --> 00:05:36,990
‫Aus irgendeinem Grund habe

102
00:05:36,990 --> 00:05:41,140
‫ich die Benutzerrouten geöffnet und nicht die Tourrouten, das tut mir leid.

103
00:05:41,140 --> 00:05:44,403
‫Schneiden wir es von hier aus, kommen wir zu unseren Tourrouten

104
00:05:45,420 --> 00:05:47,320
‫und tun es tatsächlich hier unten.

105
00:05:49,697 --> 00:05:52,523
‫Natürlich brauchen wir auch den Review-Controller.

106
00:05:56,490 --> 00:05:59,580
‫Jetzt sollten wir also startklar sein.

107
00:05:59,580 --> 00:06:01,640
‫Das war ein dummer Fehler.

108
00:06:01,640 --> 00:06:03,920
‫Aber wie auch immer, was

109
00:06:03,920 --> 00:06:06,610
‫ich sagte, ist, dass es nicht viel

110
00:06:06,610 --> 00:06:09,720
‫Sinn macht, den Review-Controller in der Tourroute tatsächlich anzurufen,

111
00:06:09,720 --> 00:06:12,300
‫aber auch hier müssen wir es vorerst

112
00:06:12,300 --> 00:06:15,000
‫so machen, da die Route mit Tour beginnt.

113
00:06:15,000 --> 00:06:17,680
‫Dieser Router wird aktiviert.

114
00:06:17,680 --> 00:06:19,460
‫Im nächsten Video werden wir das

115
00:06:19,460 --> 00:06:21,350
‫beheben, aber im Moment wollen wir es

116
00:06:21,350 --> 00:06:22,870
‫einfach zum Laufen bringen

117
00:06:22,870 --> 00:06:25,840
‫und uns mit diesem ganzen Konzept der verschachtelten Routen vertraut machen.

118
00:06:25,840 --> 00:06:29,540
‫Jedenfalls haben wir jetzt unsere Tour-ID direkt in der Route, aber

119
00:06:29,540 --> 00:06:30,880
‫natürlich müssen wir

120
00:06:30,880 --> 00:06:34,250
‫dem Controller mitteilen, dass er jetzt diese Tour-ID und auch

121
00:06:34,250 --> 00:06:37,113
‫die ID des aktuell eingeloggten Benutzers verwenden soll.

122
00:06:38,100 --> 00:06:39,240
‫Wir müssen

123
00:06:39,240 --> 00:06:41,400
‫jetzt fortfahren und unseren Review-Controller direkt

124
00:06:43,630 --> 00:06:45,433
‫hier bei Create Review aktualisieren.

125
00:06:53,817 --> 00:06:56,370
‫Was wir tun werden, ist Folgendes.

126
00:06:56,370 --> 00:07:01,360
‫Wir sagen, wenn es keine Punkt-Körper-Punkt-Tour-Anfrage gibt, also im Grunde, wenn

127
00:07:02,990 --> 00:07:06,210
‫wir die Tour-ID und den Körper nicht

128
00:07:06,210 --> 00:07:08,180
‫angegeben haben, wollen wir

129
00:07:08,180 --> 00:07:10,870
‫dies als diejenige definieren, die von

130
00:07:10,870 --> 00:07:12,603
‫der URL kommt.

131
00:07:14,080 --> 00:07:17,373
‫Req dot body dot tour ist gleich Request,

132
00:07:19,210 --> 00:07:21,910
‫und jetzt erinnern Sie sich

133
00:07:21,910 --> 00:07:25,850
‫daran, wie dieser URL-Parameter auf request dot params steht und

134
00:07:25,850 --> 00:07:29,603
‫dann natürlich den Namen des Parameters selbst, also Tour-ID.

135
00:07:32,930 --> 00:07:34,640
‫Dies ist der erste Teil und

136
00:07:34,640 --> 00:07:37,060
‫zweitens müssen wir das gleiche mit dem Benutzer machen.

137
00:07:38,450 --> 00:07:41,740
‫Wenn es

138
00:07:41,740 --> 00:07:46,710
‫keinen Anforderungspunktbenutzer oder tatsächlich einen

139
00:07:46,710 --> 00:07:50,180
‫Anforderungspunktkörperpunktbenutzer gibt, dann sollte

140
00:07:51,910 --> 00:07:56,910
‫der Anforderungspunktkörperpunktbenutzer die Anforderungspunktbenutzerpunkt-ID sein.

141
00:07:58,750 --> 00:08:01,520
‫Und wieder erhalten wir von der

142
00:08:01,520 --> 00:08:05,193
‫Protect-Middleware die Anforderung Punktbenutzer, und das war's dann auch schon.

143
00:08:06,130 --> 00:08:11,130
‫Lassen Sie uns hier einfach einen Kommentar einfügen, verschachtelte Routen.

144
00:08:13,390 --> 00:08:15,120
‫Damit schaffen wir es

145
00:08:15,120 --> 00:08:17,700
‫eigentlich, dass der Benutzer die Tour und die

146
00:08:17,700 --> 00:08:19,603
‫Benutzer-ID noch manuell angeben kann.

147
00:08:20,677 --> 00:08:21,860
‫Was wir hier

148
00:08:21,860 --> 00:08:24,250
‫tun, ist einfach, sie zu definieren, wenn sie

149
00:08:24,250 --> 00:08:27,343
‫nicht vorhanden sind oder wenn sie nicht im Anforderungstext angegeben sind.

150
00:08:28,827 --> 00:08:32,263
‫Das sollte uns reichen, um das jetzt zu testen.

151
00:08:33,410 --> 00:08:35,320
‫In Ordnung, also werfen wir einen Blick

152
00:08:35,320 --> 00:08:37,853
‫auf die Benutzer, die wir zu diesem Zeitpunkt erhalten haben.

153
00:08:41,820 --> 00:08:43,610
‫Wir haben diese beiden

154
00:08:43,610 --> 00:08:46,610
‫regulären Benutzer, wir haben den Testbenutzer und wir haben

155
00:08:46,610 --> 00:08:49,390
‫Jonas hier, aber wir haben sein Passwort vergessen.

156
00:08:49,390 --> 00:08:51,550
‫Lassen Sie uns diesen

157
00:08:51,550 --> 00:08:53,730
‫Benutzer löschen und einen neuen erstellen.

158
00:08:53,730 --> 00:08:58,730
‫In Ordnung, also in Compass, die Benutzer, und das

159
00:09:00,400 --> 00:09:01,773
‫ist dieser.

160
00:09:07,220 --> 00:09:09,723
‫Lassen Sie uns diesen Benutzer im Grunde neu erstellen.

161
00:09:11,220 --> 00:09:14,793
‫Alles, was wir wirklich brauchen, sind diese beiden Daten.

162
00:09:17,110 --> 00:09:18,543
‫Eigentlich ist das Anmelden.

163
00:09:26,820 --> 00:09:28,310
‫Der gleiche Name, die

164
00:09:29,600 --> 00:09:31,743
‫gleiche E-Mail und das gleiche Passwort.

165
00:09:35,657 --> 00:09:38,690
‫Zu diesem Zeitpunkt sind wir bereits

166
00:09:38,690 --> 00:09:42,170
‫als dieser Benutzer, sogenannter Jonas, eingeloggt, denken wir daran.

167
00:09:42,170 --> 00:09:44,950
‫Als nächstes müssen wir auswählen, für welche Tour

168
00:09:44,950 --> 00:09:47,600
‫wir die Bewertung tatsächlich erstellen möchten.

169
00:09:47,600 --> 00:09:49,790
‫Machen wir es hier bei The Forest Hiker

170
00:09:49,790 --> 00:09:52,773
‫noch einmal, damit wir dann mehrere Bewertungen auf derselben Tour erhalten.

171
00:09:54,240 --> 00:09:55,090
‫Was wir jetzt

172
00:09:55,090 --> 00:09:57,380
‫tun werden, ist im Grunde auf die verschachtelte Route zuzugreifen,

173
00:09:57,380 --> 00:09:58,430
‫die wir gerade erstellt haben.

174
00:10:02,135 --> 00:10:03,350
‫Wir haben die Touren.

175
00:10:03,350 --> 00:10:05,980
‫Jetzt müssen wir die Tour-ID abrufen,

176
00:10:05,980 --> 00:10:08,050
‫und wieder werden wir diese

177
00:10:08,050 --> 00:10:09,323
‫für The

178
00:10:12,490 --> 00:10:16,430
‫Forest Hiker verwenden, dann die Bewertungen streichen und uns dann

179
00:10:16,430 --> 00:10:18,283
‫an einen Beitrag erinnern.

180
00:10:19,230 --> 00:10:21,963
‫Dann müssen wir auch noch die Berechtigung

181
00:10:23,100 --> 00:10:27,010
‫angeben, also Inhabertoken, und dann brauchen wir jetzt im Body

182
00:10:27,010 --> 00:10:28,610
‫nur noch die

183
00:10:28,610 --> 00:10:30,673
‫Bewertung und die Bewertung anzugeben.

184
00:10:36,830 --> 00:10:37,860
‫Die Bewertung ist

185
00:10:45,220 --> 00:10:47,160
‫fünf und dann etwas Text hier.

186
00:10:47,160 --> 00:10:50,913
‫Das sollte also eigentlich schon reichen, um das auszuprobieren.

187
00:10:51,920 --> 00:10:52,753
‫Senden wir es.

188
00:10:53,769 --> 00:10:56,520
‫Jetzt haben wir aus irgendeinem Grund

189
00:10:56,520 --> 00:11:00,100
‫keine Berechtigung, diese Aktion auszuführen, also ist das seltsam.

190
00:11:00,100 --> 00:11:03,460
‫Wir haben uns als dieser Jonas angemeldet, und es

191
00:11:03,460 --> 00:11:05,610
‫ist eigentlich nur ein normaler Benutzer,

192
00:11:06,490 --> 00:11:08,203
‫wie es sein sollte.

193
00:11:09,090 --> 00:11:11,533
‫Werfen wir einen Blick auf unseren Router.

194
00:11:13,154 --> 00:11:17,170
‫Hier, oh okay, es ist der Benutzer, nicht der Benutzer.

195
00:11:19,120 --> 00:11:22,930
‫Ein kleiner Fehler wie dieser kann, wie Sie sehen, die

196
00:11:22,930 --> 00:11:27,333
‫gesamte Route zum Absturz bringen, also versuchen wir es jetzt noch einmal.

197
00:11:28,530 --> 00:11:31,750
‫Und jetzt bekommen wir tatsächlich die endgültige Bewertung, bei

198
00:11:31,750 --> 00:11:35,300
‫der sowohl die Tour als auch der Benutzer richtig definiert sind.

199
00:11:35,300 --> 00:11:38,140
‫Zumindest hoffe ich das.

200
00:11:38,140 --> 00:11:41,250
‫Die Tour-ID endet hier in 951, also ist

201
00:11:41,250 --> 00:11:43,260
‫es hier genau gleich.

202
00:11:43,260 --> 00:11:47,640
‫Der Benutzer ist dieses 1f3, und es ist

203
00:11:47,640 --> 00:11:49,343
‫tatsächlich genau dasselbe.

204
00:11:50,660 --> 00:11:53,280
‫Okay, und jetzt sollten wir das eigentlich

205
00:11:53,280 --> 00:11:56,170
‫bestätigen können, und so ist diese Get-Tour

206
00:11:56,170 --> 00:11:59,230
‫hier eigentlich schon die, auf der wir die

207
00:11:59,230 --> 00:12:01,165
‫neue Rezension erstellt haben.

208
00:12:01,165 --> 00:12:04,460
‫Werfen wir einen Blick darauf, und tatsächlich bekommen

209
00:12:04,460 --> 00:12:06,660
‫wir jetzt zwei Bewertungen.

210
00:12:06,660 --> 00:12:09,140
‫Dieser ist der, den wir gerade erstellt haben.

211
00:12:09,140 --> 00:12:11,790
‫Es ist auf der richtigen Tour

212
00:12:11,790 --> 00:12:15,450
‫und natürlich auch der richtige Benutzer mit dem Namen Jonas.

213
00:12:15,450 --> 00:12:17,973
‫Super, das ist echt cool.

214
00:12:19,620 --> 00:12:22,520
‫Lass uns weitermachen und das speichern.

215
00:12:22,520 --> 00:12:24,720
‫Ich werde hier wieder einen neuen Ordner erstellen.

216
00:12:25,610 --> 00:12:29,473
‫Ich werde es Tours Slash Reviews nennen.

217
00:12:31,086 --> 00:12:33,663
‫Jetzt hier drinnen,

218
00:12:34,705 --> 00:12:39,705
‫erstellen wir eine neue Rezension auf Tour.

219
00:12:46,220 --> 00:12:49,537
‫Das sollte eigentlich draußen sein und genau so.

220
00:12:54,397 --> 00:12:56,103
‫Lassen Sie uns das hier tatsächlich platzieren.

221
00:12:57,450 --> 00:13:01,293
‫Es funktioniert aus irgendeinem Grund nicht so wie es sollte.

222
00:13:02,130 --> 00:13:03,403
‫Und es geht los.

223
00:13:05,800 --> 00:13:08,260
‫Okay, das hat prima geklappt,

224
00:13:08,260 --> 00:13:10,870
‫aber wie bereits erwähnt, ist die

225
00:13:10,870 --> 00:13:13,450
‫Implementierung an dieser Stelle etwas verwirrend.

226
00:13:13,450 --> 00:13:16,890
‫Das liegt wiederum daran, dass wir im Tourrouter

227
00:13:16,890 --> 00:13:19,333
‫technisch eine Review-Route definiert haben.

228
00:13:20,220 --> 00:13:22,650
‫Das ist etwas verwirrend, und im nächsten Video

229
00:13:22,650 --> 00:13:24,193
‫werden wir das beheben.

