﻿1
00:00:01,380 --> 00:00:03,290
‫Tutor: In dieser

2
00:00:03,290 --> 00:00:05,450
‫Vorlesung wird es etwas fortgeschrittener.

3
00:00:05,450 --> 00:00:08,370
‫Und das liegt daran, dass wir jetzt mehrere Router

4
00:00:08,370 --> 00:00:10,860
‫erstellen und einen Prozess namens Mounten verwenden.

5
00:00:10,860 --> 00:00:12,713
‫Sehen wir uns also an, wie das alles funktioniert.

6
00:00:14,150 --> 00:00:17,090
‫Bevor wir all dies tun, sollten wir uns

7
00:00:17,090 --> 00:00:20,350
‫daran erinnern, dass das ultimative Ziel darin besteht, den gesamten Code,

8
00:00:20,350 --> 00:00:23,510
‫den wir in dieser Datei haben, in mehrere Dateien aufzuteilen.

9
00:00:23,510 --> 00:00:26,220
‫Was ich also möchte, ist eine Datei zu

10
00:00:26,220 --> 00:00:29,270
‫haben, die nur alle diese Routen enthält, dann möchte

11
00:00:29,270 --> 00:00:31,200
‫ich eine andere Datei haben,

12
00:00:31,200 --> 00:00:33,713
‫die die Routen für die Benutzer enthält.

13
00:00:34,550 --> 00:00:38,370
‫Ich möchte auch eine Datei haben, die nur die Handler

14
00:00:38,370 --> 00:00:41,690
‫für die Benutzer enthält und dann auch

15
00:00:41,690 --> 00:00:45,680
‫eine Datei, die alle Handler für die Touren enthält, okay?

16
00:00:45,680 --> 00:00:47,460
‫Und genau das werden wir in

17
00:00:47,460 --> 00:00:48,900
‫der nächsten Vorlesung tun.

18
00:00:48,900 --> 00:00:51,200
‫Aber dafür müssen wir jetzt

19
00:00:51,200 --> 00:00:54,030
‫eigentlich für jede unserer Ressourcen einen

20
00:00:54,030 --> 00:00:56,033
‫eigenen Router erstellen.

21
00:00:56,940 --> 00:01:01,320
‫Gehen wir also zurück zu unseren Routen hier und jetzt können wir

22
00:01:01,320 --> 00:01:05,890
‫sagen, dass alle unsere Routen, also diese vier Routen hier, wir sagen

23
00:01:05,890 --> 00:01:07,730
‫können, dass sie alle

24
00:01:07,730 --> 00:01:09,650
‫auf demselben Router liegen, okay?

25
00:01:09,650 --> 00:01:12,800
‫Und der Router ist dieses App-Objekt.

26
00:01:12,800 --> 00:01:15,090
‫Aber wenn wir diese Routen

27
00:01:15,090 --> 00:01:17,810
‫in verschiedene Dateien aufteilen möchten, also wieder

28
00:01:17,810 --> 00:01:19,820
‫eine Datei für diese

29
00:01:19,820 --> 00:01:22,440
‫beiden Routen und eine Datei für diese

30
00:01:22,440 --> 00:01:25,540
‫beiden Routen, dann erstellen Sie am besten einen

31
00:01:25,540 --> 00:01:28,140
‫Router für jede der Ressourcen, okay?

32
00:01:28,140 --> 00:01:30,720
‫Und so werden wir es machen.

33
00:01:30,720 --> 00:01:33,390
‫Es ist eigentlich nicht so kompliziert, aber

34
00:01:33,390 --> 00:01:34,890
‫Sie müssen sich

35
00:01:34,890 --> 00:01:37,283
‫mit ein paar Konzepten auseinandersetzen, okay?

36
00:01:38,420 --> 00:01:40,070
‫Lassen Sie uns also

37
00:01:40,070 --> 00:01:45,070
‫zunächst sagen, const tourRouter ist gleichbedeutend mit Express. Router.

38
00:01:51,110 --> 00:01:52,560
‫Okay, also erstellen

39
00:01:52,560 --> 00:01:57,120
‫wir einfach so einen neuen Router und speichern ihn in dieser Variable.

40
00:01:57,120 --> 00:01:59,590
‫In Ordnung, und jetzt verwenden wir diesen

41
00:01:59,590 --> 00:02:01,480
‫Router für diese beiden Routen.

42
00:02:01,480 --> 00:02:03,653
‫Also hier verwenden wir es anstelle von App.

43
00:02:04,860 --> 00:02:07,550
‫Okay, jetzt haben wir also zwei Router und dann

44
00:02:07,550 --> 00:02:09,710
‫Route und dann natürlich die Get- und

45
00:02:09,710 --> 00:02:11,420
‫Post-Routen auf diesem Router.

46
00:02:11,420 --> 00:02:14,080
‫Wie verbinden wir nun diesen neuen Router

47
00:02:14,080 --> 00:02:15,630
‫eigentlich mit unserer Anwendung?

48
00:02:15,630 --> 00:02:19,370
‫Nun, wir werden es als Middleware verwenden, in Ordnung?

49
00:02:19,370 --> 00:02:23,770
‫Und das liegt daran, dass dieser neue modulare Werkzeugrouter hier eigentlich

50
00:02:23,770 --> 00:02:26,480
‫eine echte Middleware ist, in Ordnung?

51
00:02:26,480 --> 00:02:28,330
‫Und so

52
00:02:29,980 --> 00:02:34,980
‫können wir sagen (Tastatureingabe), App. verwenden, und dann die Route, aber das behalten wir für später.

53
00:02:36,760 --> 00:02:41,760
‫Damit wir den tourRouter in unserer Anwendung nutzen können und wo

54
00:02:42,020 --> 00:02:44,647
‫wollen wir den tourRouter einsetzen?

55
00:02:44,647 --> 00:02:46,650
‫Nun, wir

56
00:02:46,650 --> 00:02:51,650
‫wollen es auf /api/version one/tours verwenden, okay?

57
00:02:53,800 --> 00:02:58,030
‫Auch hier ist dieser tourRouter eine echte Middleware.

58
00:02:58,030 --> 00:03:01,850
‫Und wir möchten diese Middleware für diese spezielle Route verwenden.

59
00:03:01,850 --> 00:03:04,240
‫Okay, und so verwenden wir App. verwenden und

60
00:03:04,240 --> 00:03:07,883
‫die Middleware-Funktion angeben, das ist dieser Router, dann

61
00:03:07,883 --> 00:03:11,540
‫geben wir die Route an, also die URL,

62
00:03:11,540 --> 00:03:15,200
‫für die wir diese Middleware eigentlich verwenden möchten, okay?

63
00:03:15,200 --> 00:03:16,640
‫Und so

64
00:03:16,640 --> 00:03:20,700
‫haben wir im Grunde eine Unteranwendung erstellt, okay?

65
00:03:20,700 --> 00:03:22,270
‫Nun, es gibt nur

66
00:03:22,270 --> 00:03:24,060
‫eine Sache, die wir hier

67
00:03:24,060 --> 00:03:27,110
‫wirklich ändern müssen, und zwar diese Routen hier drin, okay?

68
00:03:27,110 --> 00:03:29,830
‫Lassen Sie mich das hier ändern und dann erklären,

69
00:03:29,830 --> 00:03:31,830
‫warum es so sein muss.

70
00:03:31,830 --> 00:03:34,267
‫Hier wollen wir also nur

71
00:03:34,267 --> 00:03:37,600
‫die Route und hier drinnen nur die ID, okay?

72
00:03:37,600 --> 00:03:39,450
‫Nun, warum ist das so?

73
00:03:39,450 --> 00:03:42,540
‫Nun, es liegt daran, dass diese

74
00:03:42,540 --> 00:03:46,200
‫TourRouter-Middleware sowieso nur auf dieser Route hier läuft, okay?

75
00:03:46,200 --> 00:03:48,400
‫Und wenn wir also erst einmal im Router

76
00:03:48,400 --> 00:03:50,700
‫sind, dann sind wir auch schon auf dieser Route.

77
00:03:50,700 --> 00:03:54,150
‫Also bei unserer tourRoute, und also dieser ersten

78
00:03:54,150 --> 00:03:57,370
‫Route, die wir vorher machen mussten, wollen wir

79
00:03:57,370 --> 00:04:00,090
‫sie nur als api/version one/tours

80
00:04:00,090 --> 00:04:03,740
‫ausführen und das bedeutet diese Route hier jetzt, okay?

81
00:04:03,740 --> 00:04:07,720
‫Es ist also im Grunde die Route dieser URL, okay?

82
00:04:07,720 --> 00:04:10,750
‫Ist diese kleine Minianwendung also in Ordnung?

83
00:04:10,750 --> 00:04:14,260
‫Wenn wir also ein Router-System wie dieses

84
00:04:14,260 --> 00:04:18,650
‫erstellen, sagen wir eigentlich, dass wir für jede dieser

85
00:04:18,650 --> 00:04:21,793
‫Ressourcen eine kleine Unter-App erstellen, okay?

86
00:04:22,860 --> 00:04:26,410
‫Dies ist also die Route oder

87
00:04:26,410 --> 00:04:30,390
‫Minianwendung, die wiederum bei /tours ist, Okay?

88
00:04:30,390 --> 00:04:34,150
‫Und dann ist die zweite Route bei /id, richtig?

89
00:04:34,150 --> 00:04:35,680
‫Und das liegt daran,

90
00:04:35,680 --> 00:04:39,303
‫dass es vorher bei Tours /id war, also war das alles.

91
00:04:40,190 --> 00:04:44,330
‫Also so, aber jetzt ist diese URL hier

92
00:04:44,330 --> 00:04:49,330
‫bereits in unserer Art der übergeordneten Route hier oben, oder?

93
00:04:49,400 --> 00:04:51,980
‫Nehmen wir an, wir

94
00:04:51,980 --> 00:04:56,690
‫haben jetzt eine eingehende Anfrage für /api/version one /tours/version id.

95
00:04:56,690 --> 00:04:59,460
‫Die Anfrage geht also in den Middleware-Stack

96
00:04:59,460 --> 00:05:02,190
‫und wenn sie diese Codezeile hier

97
00:05:02,190 --> 00:05:05,060
‫trifft, wird sie dieser URL hier entsprechen, richtig?

98
00:05:05,060 --> 00:05:07,380
‫Es wird also mit dieser Route

99
00:05:07,380 --> 00:05:10,150
‫übereinstimmen und daher werden ein oder zwei Router-Middleware-Funktionen ausgeführt.

100
00:05:10,150 --> 00:05:14,310
‫Also oder zwei Router ist diese Unteranwendung, die wir erstellt

101
00:05:14,310 --> 00:05:17,740
‫haben, die wiederum ihre eigenen Routen hat, okay?

102
00:05:17,740 --> 00:05:20,570
‫Und wenn die Anfrage nach /id war, nun,

103
00:05:20,570 --> 00:05:22,480
‫dann wird sie in

104
00:05:22,480 --> 00:05:25,220
‫unserer Mini-App diese Route hier finden, oder?

105
00:05:25,220 --> 00:05:26,250
‫Und schließlich

106
00:05:26,250 --> 00:05:29,030
‫wird es hier natürlich einen dieser Handles ausführen,

107
00:05:29,030 --> 00:05:31,190
‫je nachdem, welche Methode verwendet wurde.

108
00:05:31,190 --> 00:05:34,010
‫Also ich hoffe, das war sinnvoll.

109
00:05:34,010 --> 00:05:36,580
‫Also lasst uns jetzt wirklich weitermachen

110
00:05:36,580 --> 00:05:39,363
‫und dasselbe für alle Benutzer tun, in Ordnung?

111
00:05:40,220 --> 00:05:44,089
‫Also werde ich hier einen anderen Router erstellen

112
00:05:44,089 --> 00:05:47,370
‫(Tastatureingabe), den userRouter, und dann, wie

113
00:05:49,727 --> 00:05:52,520
‫zuvor, Express. Router

114
00:05:55,970 --> 00:05:58,823
‫nicht so, ja.

115
00:06:00,160 --> 00:06:02,333
‫Okay, verwenden Sie also einen Router,

116
00:06:05,810 --> 00:06:08,970
‫und dann müssen wir den gleichen Vorgang wie hier durchführen.

117
00:06:08,970 --> 00:06:12,980
‫Und das nennt man übrigens Router montieren, okay?

118
00:06:12,980 --> 00:06:17,980
‫Also einen neuen Router auf einer Route montieren, im Grunde, okay?

119
00:06:19,770 --> 00:06:23,970
‫Wir haben also jetzt Benutzer und hier Benutzer.

120
00:06:26,100 --> 00:06:28,870
‫Und eigentlich muss die

121
00:06:28,870 --> 00:06:32,330
‫Montage der Router nach all diesen Definitionen

122
00:06:32,330 --> 00:06:37,330
‫erfolgen oder zumindest nachdem wir eine Variable deklariert haben, oder?

123
00:06:39,660 --> 00:06:41,190
‫Wir können die Router also

124
00:06:41,190 --> 00:06:43,560
‫nicht verwenden, bevor wir sie tatsächlich deklariert haben.

125
00:06:43,560 --> 00:06:46,630
‫Okay, jetzt müssen wir nur

126
00:06:46,630 --> 00:06:50,223
‫noch weitermachen und auch die Routen hier ändern.

127
00:06:51,850 --> 00:06:55,160
‫Und so wie zuvor, wenn jetzt eine

128
00:06:55,160 --> 00:06:59,740
‫Anforderung für /api/version one/users/id vorliegt, wird die Anforderung in den

129
00:06:59,740 --> 00:07:02,350
‫Middleware-Stack eingetragen und wenn sie

130
00:07:02,350 --> 00:07:04,680
‫hier auf diese Middleware trifft,

131
00:07:04,680 --> 00:07:06,560
‫wird der Benutzerrouter

132
00:07:06,560 --> 00:07:10,250
‫ausgeführt, da diese Route hier ist abgestimmt, ok?

133
00:07:10,250 --> 00:07:12,320
‫Und dann gibt es den

134
00:07:12,320 --> 00:07:14,220
‫Benutzerrouter ein und

135
00:07:14,220 --> 00:07:18,960
‫wieder, genau wie zuvor, ist dieser Fehler die Route im Grunde

136
00:07:18,960 --> 00:07:23,860
‫in unserer Unteranwendung, und dies hier ist die gesamte URL/ID, okay?

137
00:07:23,860 --> 00:07:25,550
‫Ist das sinnvoll?

138
00:07:25,550 --> 00:07:26,710
‫Bevor wir fortfahren,

139
00:07:26,710 --> 00:07:29,723
‫sollten wir also testen, ob dies noch funktioniert.

140
00:07:30,640 --> 00:07:35,210
‫Also, lassen Sie uns alle Touren hier bekommen und tatsächlich tut es das.

141
00:07:35,210 --> 00:07:40,000
‫Bei den Benutzern funktioniert also immer noch alles gleich und

142
00:07:40,000 --> 00:07:42,380
‫auch das funktioniert noch.

143
00:07:42,380 --> 00:07:45,410
‫Also haben wir all diese Änderungen vorgenommen und die

144
00:07:45,410 --> 00:07:49,350
‫Arbeiten dekodiert, was bedeutet, dass unsere beiden neuen Router korrekt montiert sind.

145
00:07:49,350 --> 00:07:53,230
‫In Ordnung, und damit sind wir bereit, Router jetzt

146
00:07:53,230 --> 00:07:56,250
‫tatsächlich in verschiedene Dateien zu trennen.

147
00:07:56,250 --> 00:07:58,993
‫Und das werden wir in der nächsten Vorlesung richtig machen.

