﻿1
00:00:01,350 --> 00:00:03,520
‫Jonas: Lassen Sie uns nun einen

2
00:00:03,520 --> 00:00:07,750
‫Route-Handler für Post-Requests implementieren, damit wir tatsächlich eine Natour zu unserem Datensatz

3
00:00:07,750 --> 00:00:09,023
‫hinzufügen können.

4
00:00:10,470 --> 00:00:12,870
‫Beginnen wir also wie beim

5
00:00:12,870 --> 00:00:15,350
‫doGET()-Request-Handler mit dem Hinzufügen einer neuen Route.

6
00:00:15,350 --> 00:00:19,220
‫Also App. post dieses Mal, und denken

7
00:00:19,220 --> 00:00:22,120
‫Sie daran, dass wir hier post, also die post-Methode,

8
00:00:22,120 --> 00:00:26,140
‫verwenden, denn das ist die Art von Anfrage, die wir bearbeiten möchten.

9
00:00:26,140 --> 00:00:30,263
‫Also Anfragen, die mit dem HTTP-Post-Verb gestellt werden, richtig?

10
00:00:32,483 --> 00:00:33,316
‫V1

11
00:00:34,610 --> 00:00:35,960
‫und Touren.

12
00:00:35,960 --> 00:00:39,690
‫Genau wie wir in der REST-API-Vorlesung gesprochen haben, ist

13
00:00:39,690 --> 00:00:42,363
‫die URL tatsächlich genau dieselbe.

14
00:00:43,390 --> 00:00:46,290
‫Egal, ob wir alle Touren abrufen oder

15
00:00:46,290 --> 00:00:48,800
‫eine neue Tour erstellen möchten, die

16
00:00:48,800 --> 00:00:50,650
‫URL ist genau gleich.

17
00:00:50,650 --> 00:00:53,780
‫Dann ändert sich nur die http-Methode, die wir

18
00:00:53,780 --> 00:00:56,363
‫für diese Anfragen verwendet haben.

19
00:00:57,592 --> 00:01:01,420
‫Um alle Touren zu erhalten und zu posten, um eine

20
00:01:01,420 --> 00:01:04,337
‫neue Tour zu erstellen, dann hier unsere typische

21
00:01:04,337 --> 00:01:06,906
‫Rückruffunktion, bei der wir Zugriff auf

22
00:01:06,906 --> 00:01:10,810
‫die Anfrage und das Antwortobjekt erhalten, damit wir einige Daten aus

23
00:01:10,810 --> 00:01:14,560
‫der Anfrage erhalten und eine entsprechende Nachricht zurücksenden können Antwort.

24
00:01:14,560 --> 00:01:16,800
‫Denken Sie jetzt daran, dass wir

25
00:01:16,800 --> 00:01:20,790
‫mit einer Post-Anfrage Daten vom Client an den Server senden können, oder?

26
00:01:20,790 --> 00:01:24,543
‫Diese Daten stehen dann idealerweise auf Anfrage zur Verfügung.

27
00:01:25,690 --> 00:01:28,970
‫Das Anfrageobjekt enthält wiederum alle Daten, alle

28
00:01:28,970 --> 00:01:32,240
‫Informationen über die durchgeführte Anfrage.

29
00:01:32,240 --> 00:01:35,190
‫Wenn diese Anfrage gesendete Daten enthält,

30
00:01:35,190 --> 00:01:38,840
‫sollten diese Daten in der Anfrage enthalten sein, oder?

31
00:01:38,840 --> 00:01:42,890
‫Express stellt diese Körperdaten jetzt nicht mehr auf die Anfrage,

32
00:01:42,890 --> 00:01:46,670
‫und um diese Daten zur Verfügung zu haben, müssen

33
00:01:46,670 --> 00:01:49,176
‫wir eine sogenannte Middleware verwenden.

34
00:01:49,176 --> 00:01:52,100
‫Wir werden in einigen Vorträgen ausführlich über

35
00:01:52,100 --> 00:01:54,220
‫Middleware sprechen, aber damit dies

36
00:01:54,220 --> 00:01:56,280
‫funktioniert, müssen wir

37
00:01:56,280 --> 00:01:59,943
‫hier oben in der Datei eine einfache Middleware einfügen.

38
00:02:01,860 --> 00:02:04,000
‫Also eigentlich genau hier.

39
00:02:04,000 --> 00:02:09,370
‫Was wir tun müssen, ist App zu sagen. verwenden, dann ausdrücken.

40
00:02:12,687 --> 00:02:13,520
‫json Okay, und das war's.

41
00:02:14,490 --> 00:02:16,030
‫Also noch einmal, dies [express. json] hier ist Middleware.

42
00:02:16,030 --> 00:02:20,480
‫Und Middleware ist im Grunde

43
00:02:20,480 --> 00:02:23,510
‫eine Funktion, die die eingehenden Anforderungsdaten ändern kann.

44
00:02:23,510 --> 00:02:25,560
‫Es wird Middleware genannt, weil es zwischen,

45
00:02:25,560 --> 00:02:28,370
‫also in der Mitte der Anfrage und der Antwort, steht.

46
00:02:28,370 --> 00:02:31,390
‫Es ist nur ein Schritt, den die

47
00:02:31,390 --> 00:02:34,030
‫Anfrage während der Verarbeitung durchläuft.

48
00:02:34,030 --> 00:02:35,830
‫Und der Schritt, den die Anfragen durchlaufen, besteht

49
00:02:35,830 --> 00:02:38,440
‫in diesem Beispiel darin, dass die Daten aus dem Hauptteil hinzugefügt werden.

50
00:02:38,440 --> 00:02:42,330
‫Es wird also mit dieser Middleware

51
00:02:42,330 --> 00:02:44,410
‫zum Anforderungsobjekt hinzugefügt.

52
00:02:44,410 --> 00:02:45,963
‫Wir verwenden App. verwenden, um Middleware wie diese zu verwenden.

53
00:02:47,560 --> 00:02:51,763
‫Und wieder werden wir etwas später in

54
00:02:52,870 --> 00:02:55,250
‫diesem Abschnitt noch viel mehr über Middleware sprechen.

55
00:02:55,250 --> 00:02:57,540
‫Im Moment wissen Sie nur, dass wir Middleware so verwenden.

56
00:02:57,540 --> 00:03:00,703
‫Alle Details folgen dann später.

57
00:03:01,750 --> 00:03:04,110
‫Für den Anfang möchte ich Ihnen

58
00:03:04,110 --> 00:03:07,307
‫die Daten des Hauptteils in der Konsole anzeigen, um zu

59
00:03:07,307 --> 00:03:09,830
‫überprüfen, ob es tatsächlich funktioniert, also req. Karosserie.

60
00:03:09,830 --> 00:03:14,830
‫Auch hier ist body die

61
00:03:14,920 --> 00:03:17,960
‫Eigenschaft, die auf Anfrage verfügbar sein wird, da

62
00:03:17,960 --> 00:03:21,130
‫wir diese Middleware vor ein paar Augenblicken verwendet haben.

63
00:03:21,130 --> 00:03:22,393
‫Also wollen wir log[req. body] an die Konsole und

64
00:03:23,560 --> 00:03:27,090
‫dann müssen wir auch eine Antwort zurücksenden.

65
00:03:27,090 --> 00:03:29,600
‫Also res. senden und vorerst nur einige Platzhalter hier.

66
00:03:29,600 --> 00:03:34,083
‫Einfach 'Fertig'.

67
00:03:35,870 --> 00:03:37,020
‫Wir müssen

68
00:03:37,020 --> 00:03:39,070
‫also immer etwas zurücksenden, um den

69
00:03:39,070 --> 00:03:42,600
‫sogenannten Anfrage/Antwort-Zyklus abzuschließen, über den wir später in diesem Abschnitt

70
00:03:42,600 --> 00:03:44,980
‫noch einmal etwas mehr erfahren werden.

71
00:03:44,980 --> 00:03:46,530
‫Lassen Sie uns dies

72
00:03:46,530 --> 00:03:49,363
‫jetzt testen und eine neue Anfrage für den Beitrag erstellen.

73
00:03:49,363 --> 00:03:51,200
‫Jetzt können wir hier im Postboten

74
00:03:51,200 --> 00:03:53,680
‫etwas wirklich Schönes tun, nämlich all diese Anfragen zu speichern.

75
00:03:53,680 --> 00:03:56,133
‫Ich werde damit beginnen, eine neue

76
00:03:58,180 --> 00:04:01,200
‫Kollektion zu erstellen, die ich Natours nennen werde.

77
00:04:01,200 --> 00:04:02,500
‫Neue Kollektion.

78
00:04:06,570 --> 00:04:07,600
‫Jetzt werde ich diese Anfrage in dieser Sammlung speichern.

79
00:04:07,600 --> 00:04:10,793
‫Dies ist also Holen Sie sich alle Touren.

80
00:04:12,650 --> 00:04:14,573
‫Legen Sie es in Natours ein und speichern Sie es.

81
00:04:17,380 --> 00:04:20,290
‫Jetzt haben wir hier unsere Get-Anfragen.

82
00:04:20,290 --> 00:04:23,563
‫Nun, lass uns diesen hier jetzt kopieren und

83
00:04:26,070 --> 00:04:27,410
‫einen neuen erstellen.

84
00:04:27,410 --> 00:04:28,583
‫Dies ist also eine Post-Anfrage.

85
00:04:30,120 --> 00:04:31,970
‫Bevor ich es mache,

86
00:04:31,970 --> 00:04:35,330
‫werde ich es tatsächlich auch direkt in dieser Sammlung speichern.

87
00:04:35,330 --> 00:04:36,853
‫Erstellen Sie also eine neue Tour.

88
00:04:38,080 --> 00:04:41,083
‫Hier auf der linken Seite haben wir nun unsere beiden Anfragen.

89
00:04:43,443 --> 00:04:47,733
‫Geben wir hier nun tatsächlich unseren Körper an, also die Daten,

90
00:04:49,070 --> 00:04:52,620
‫die wir im Grunde an den Server senden wollen.

91
00:04:52,620 --> 00:04:56,550
‫Wir kommen hier zu Body, und es gibt verschiedene Möglichkeiten, dies

92
00:04:56,550 --> 00:04:59,370
‫jetzt zu tun, aber die einfachste ist,

93
00:04:59,370 --> 00:05:02,250
‫einfach Raw und dann Application JSON zu sagen.

94
00:05:02,250 --> 00:05:06,260
‫Alles, was wir hier tun müssen, ist im Grunde etwas JSON anzugeben,

95
00:05:06,260 --> 00:05:09,470
‫und das wird dann an den Server übertragen.

96
00:05:09,470 --> 00:05:12,180
‫Das erste, was wir angeben möchten, ist der

97
00:05:12,180 --> 00:05:13,760
‫Name der Tour, und

98
00:05:13,760 --> 00:05:17,150
‫Sie erinnern sich, dass in JSON alles in Anführungszeichen und

99
00:05:17,150 --> 00:05:20,550
‫tatsächlich in doppelten Anführungszeichen stehen muss, nicht nur in Anführungszeichen.

100
00:05:20,550 --> 00:05:21,873
‫Lassen Sie mich dies einfach eine

101
00:05:22,810 --> 00:05:26,040
‫Testtour nennen und schauen wir uns an, was wir sonst noch in den Tourdaten haben.

102
00:05:26,040 --> 00:05:29,343
‫Wir haben also den Namen, wir haben die Dauer und

103
00:05:30,550 --> 00:05:32,850
‫sagen wir einfach auch die Schwierigkeit.

104
00:05:32,850 --> 00:05:35,033
‫Daher werde ich nicht alle diese Angaben machen, weil das viel

105
00:05:37,260 --> 00:05:38,720
‫zu viel Zeit in Anspruch nimmt.

106
00:05:38,720 --> 00:05:40,893
‫Sagen wir einfach, die Dauer

107
00:05:42,500 --> 00:05:45,870
‫beträgt 10 Tage und die Schwierigkeit ist

108
00:05:45,870 --> 00:05:46,890
‫einfach.

109
00:05:50,250 --> 00:05:51,483
‫Das wird als unser Körper an den Server übermittelt.

110
00:05:52,800 --> 00:05:57,290
‫Das ist jetzt also getestet, drücken Sie auf Senden und hier erhalten wir

111
00:05:57,290 --> 00:06:00,550
‫unsere Antwort zurück, die erledigt ist, denken Sie daran.

112
00:06:00,550 --> 00:06:03,500
‫Hier ist die Antwort, die wir gesendet haben, fertig.

113
00:06:07,104 --> 00:06:09,520
‫Und Sie sehen, dass wir hier unten in

114
00:06:09,520 --> 00:06:11,700
‫unserer Konsole ein Objekt haben, das im

115
00:06:11,700 --> 00:06:15,153
‫Grunde genommen der JSON ist, den wir in unseren Körper gesendet haben, richtig?

116
00:06:15,153 --> 00:06:17,750
‫So perfekt, es funktioniert!

117
00:06:17,750 --> 00:06:19,600
‫Es ist kein JSON mehr, wie Sie sehen können.

118
00:06:19,600 --> 00:06:21,170
‫Es ist wirklich ein JavaScript-Objekt.

119
00:06:21,170 --> 00:06:23,860
‫Um Ihnen zu zeigen, dass wir

120
00:06:23,860 --> 00:06:27,000
‫wirklich Middleware brauchten, lassen Sie uns diese auskommentieren.

121
00:06:27,000 --> 00:06:28,350
‫Erneut senden.

122
00:06:30,190 --> 00:06:31,688
‫Habe jetzt die Anfrage nicht mehr. Körper, oder?

123
00:06:31,688 --> 00:06:36,160
‫Deshalb ist es jetzt undefiniert, weil es nicht mehr existiert.

124
00:06:36,160 --> 00:06:39,093
‫Speichern Sie es, senden Sie unsere

125
00:06:40,440 --> 00:06:44,030
‫Anfrage erneut und jetzt ist es wieder da.

126
00:06:44,030 --> 00:06:45,403
‫Wir haben unsere Post-Route

127
00:06:48,220 --> 00:06:51,510
‫alle eingerichtet, sie funktioniert jetzt und wir erhalten auch Zugriff auf den

128
00:06:51,510 --> 00:06:53,810
‫Hauptteil, und was wir jetzt tun möchten, ist,

129
00:06:53,810 --> 00:06:56,830
‫diese Daten tatsächlich in dieser einfachen JSON-Datei der Tour beizubehalten.

130
00:06:56,830 --> 00:07:00,680
‫Wir werden diese Datei tatsächlich ändern, sodass die Daten

131
00:07:00,680 --> 00:07:04,090
‫hier in unserer fiktiven Datenbank gespeichert werden.

132
00:07:04,090 --> 00:07:07,500
‫Diese JSON-Datei funktioniert im Moment sozusagen

133
00:07:07,500 --> 00:07:09,820
‫als unsere fiktive Datenbank.

134
00:07:09,820 --> 00:07:11,623
‫Also kümmern wir uns jetzt darum.

135
00:07:12,850 --> 00:07:15,810
‫Ich werde weitermachen und dieses auskommentieren.

136
00:07:15,810 --> 00:07:18,063
‫Also lasst uns anfangen.

137
00:07:19,250 --> 00:07:20,650
‫Als erstes müssen

138
00:07:20,650 --> 00:07:23,440
‫wir die ID des neuen Objekts herausfinden.

139
00:07:23,440 --> 00:07:25,240
‫Denken Sie auch in der

140
00:07:25,240 --> 00:07:28,720
‫Vorlesung über REST-APIs daran, dass wir beim Erstellen eines neuen Objekts

141
00:07:28,720 --> 00:07:30,570
‫niemals die ID des Objekts angeben.

142
00:07:30,570 --> 00:07:33,200
‫Dafür sorgt in der Regel die Datenbank.

143
00:07:33,200 --> 00:07:35,623
‫Ein neues Objekt erhält normalerweise automatisch seine neue ID.

144
00:07:36,980 --> 00:07:40,470
‫Nun, in diesem Fall haben wir keine Datenbank, also

145
00:07:40,470 --> 00:07:42,840
‫nehmen wir einfach die ID

146
00:07:42,840 --> 00:07:46,020
‫des letzten Objekts und fügen dann +1 hinzu.

147
00:07:46,020 --> 00:07:48,833
‫Lassen Sie uns das sehr schnell tun, und das ist

148
00:07:50,020 --> 00:07:51,010
‫nur grundlegendes JavaScript.

149
00:07:51,010 --> 00:07:53,440
‫Also neuId es Touren sind, oder?

150
00:07:53,440 --> 00:07:57,740
‫Denken Sie daran, dass Touren wir bereits die

151
00:07:57,740 --> 00:08:01,160
‫Daten in dieser Tour-Variable haben.

152
00:08:01,160 --> 00:08:02,673
‫Das ist also

153
00:08:03,800 --> 00:08:06,500
‫ein Array aller Tour-Objekte, und wir wollen

154
00:08:06,500 --> 00:08:08,313
‫das letzte, nämlich Touren. length - 1, dann die

155
00:08:09,150 --> 00:08:13,410
‫id-Eigenschaft davon und wir fügen + 1 hinzu.

156
00:08:13,410 --> 00:08:17,220
‫Das ist also die neue ID.

157
00:08:17,220 --> 00:08:18,823
‫Als nächstes erstellen wir eine neue

158
00:08:21,533 --> 00:08:23,033
‫Tour, und diese Tour ist

159
00:08:23,950 --> 00:08:28,070
‫im Grunde der Körper, den wir senden, plus die neue ID, die wir gerade erstellt haben.

160
00:08:28,070 --> 00:08:30,863
‫Wir können also Objekt verwenden. Assign, die uns im Grunde erlaubt,

161
00:08:31,950 --> 00:08:36,730
‫ein neues Objekt zu

162
00:08:36,730 --> 00:08:40,070
‫erstellen, indem wir zwei vorhandene Objekte zusammenführen.

163
00:08:40,070 --> 00:08:41,130
‫Das erste

164
00:08:41,130 --> 00:08:43,300
‫Objekt ist also id=newId, und

165
00:08:43,300 --> 00:08:44,920
‫dann wollen wir

166
00:08:48,270 --> 00:08:49,200
‫request. Karosserie.

167
00:08:51,140 --> 00:08:52,353
‫Wir hätten auch req. Karosserie. id=newId, aber

168
00:08:54,330 --> 00:08:58,730
‫ich wollte das ursprüngliche Körperobjekt nicht mutieren.

169
00:09:00,250 --> 00:09:03,503
‫Ich habe es einfach so belassen.

170
00:09:04,740 --> 00:09:06,323
‫Das ist die neue Tour,

171
00:09:08,564 --> 00:09:11,720
‫und jetzt wollen wir diese Tour ins Tour-Array schieben, oder?

172
00:09:11,720 --> 00:09:16,120
‫Touren, ist die Auswahl der neun Touren, die

173
00:09:16,120 --> 00:09:19,130
‫wir an dieser Stelle haben.

174
00:09:19,130 --> 00:09:20,330
‫Wir sagen schieben und schieben die neue Tour rein.

175
00:09:20,330 --> 00:09:25,163
‫Das ist das Array, das jetzt die neue Tour enthält, aber natürlich

176
00:09:27,880 --> 00:09:31,500
‫müssen wir das jetzt in der Datei beibehalten.

177
00:09:31,500 --> 00:09:35,110
‫Das ist an dieser Stelle wieder ganz einfach

178
00:09:35,110 --> 00:09:37,855
‫für Sie, also verwenden Sie fs. Datei schreiben.

179
00:09:37,855 --> 00:09:41,840
‫Welchen sollten wir also verwenden?

180
00:09:41,840 --> 00:09:43,390
‫writeFile oder writeFileSync?

181
00:09:43,390 --> 00:09:46,540
‫Die Antwort darauf ist ganz einfach.

182
00:09:47,570 --> 00:09:50,070
‫Wir befinden uns in einer Rückruffunktion, die

183
00:09:50,070 --> 00:09:52,010
‫in der Ereignisschleife ausgeführt wird.

184
00:09:52,010 --> 00:09:54,430
‫Wir können die Ereignisschleife niemals blockieren.

185
00:09:54,430 --> 00:09:57,180
‫Was wir tun werden, ist

186
00:09:57,180 --> 00:10:00,030
‫writeFile zu verwenden und nicht zu synchronisieren.

187
00:10:00,030 --> 00:10:01,720
‫Wir möchten eine Callback-Funktion übergeben,

188
00:10:01,720 --> 00:10:03,820
‫die im Hintergrund verarbeitet wird und

189
00:10:03,820 --> 00:10:05,800
‫sobald sie fertig ist, wird ihr

190
00:10:05,800 --> 00:10:07,160
‫Ereignis in

191
00:10:07,160 --> 00:10:10,810
‫eine der Ereignisschleifen-Warteschlangen gestellt, die dann verarbeitet werden, sobald die Ereignisschleife

192
00:10:10,810 --> 00:10:12,180
‫erfolgt passiert diese Phase.

193
00:10:12,180 --> 00:10:14,760
‫Erinnern Sie sich noch an den Event Loop-Vortrag?

194
00:10:14,760 --> 00:10:17,360
‫Wie auch immer, holen wir uns den

195
00:10:17,360 --> 00:10:21,080
‫Dateinamen von hier oben, denn wir werden diese Datei wirklich

196
00:10:21,080 --> 00:10:23,650
‫überschreiben, damit sie beim Neustart dieses

197
00:10:23,650 --> 00:10:25,270
‫Servers dort ist.

198
00:10:25,270 --> 00:10:26,823
‫Also wo

199
00:10:28,040 --> 00:10:30,101
‫- genau hier.

200
00:10:30,101 --> 00:10:31,018
‫Das ist also die Datei, in die wir schreiben möchten.

201
00:10:31,937 --> 00:10:35,246
‫Die Daten, die wir schreiben wollen, das sind Touren, und

202
00:10:35,246 --> 00:10:37,733
‫dann unsere Callback-Funktion, die in diesem Fall

203
00:10:39,040 --> 00:10:40,760
‫nur den Fehler hat.

204
00:10:40,760 --> 00:10:43,203
‫Hier ist mir gerade aufgefallen,

205
00:10:46,040 --> 00:10:49,890
‫dass wir dieses Objekt auch stringifizieren müssen, oder?

206
00:10:49,890 --> 00:10:51,580
‫Wir wollen json in

207
00:10:51,580 --> 00:10:53,680
‫dieser JSON-Datei, und dies ist im Moment

208
00:10:53,680 --> 00:10:57,020
‫nur ein einfaches, normales JavaScript-Objekt und daher müssen wir es konvertieren.

209
00:10:57,020 --> 00:10:58,580
‫Aber das ist wieder einfach, hab das schon gemacht.

210
00:10:58,580 --> 00:11:02,320
‫JSON. Stringify des Objekts.

211
00:11:05,510 --> 00:11:06,343
‫Was wollen wir tun, sobald die Datei geschrieben ist?

212
00:11:07,930 --> 00:11:11,760
‫Normalerweise senden wir das neu erstellte Objekt

213
00:11:11,760 --> 00:11:13,340
‫als Antwort.

214
00:11:13,340 --> 00:11:16,683
‫Lass uns das tun.

215
00:11:17,670 --> 00:11:18,600
‫Also Antwort, und

216
00:11:18,600 --> 00:11:21,650
‫dann beginnen wir wie immer mit der Angabe des Statuscodes.

217
00:11:21,650 --> 00:11:23,340
‫In diesem Fall wird es kein 200, sondern ein 201.

218
00:11:23,340 --> 00:11:26,483
‫Also 201, was erstellt bedeutet.

219
00:11:27,400 --> 00:11:30,190
‫200 steht für okay, 201

220
00:11:30,190 --> 00:11:34,090
‫steht für erstellt, und genau das ist hier passiert.

221
00:11:34,090 --> 00:11:36,260
‫Wir haben eine neue Ressource auf einem Server erstellt.

222
00:11:36,260 --> 00:11:38,513
‫Also JSON, und diese Nachricht wird hier immer wieder hinzugefügt.

223
00:11:41,260 --> 00:11:45,873
‫Status ist wieder Erfolg.

224
00:11:48,240 --> 00:11:50,993
‫Ich verwende hier nicht die Results-Eigenschaft,

225
00:11:52,500 --> 00:11:56,770
‫die wir zuvor hatten, da ich jetzt nur ein Ergebnis zurücksende.

226
00:11:56,770 --> 00:11:59,263
‫Daten sind hier unser Umschlag.

227
00:12:00,651 --> 00:12:02,203
‫Tour ist neue Tour.

228
00:12:04,100 --> 00:12:09,100
‫Das ist es!

229
00:12:09,230 --> 00:12:10,063
‫Speichern Sie es

230
00:12:10,063 --> 00:12:12,660
‫hier und formatieren Sie es oder codieren Sie ein wenig.

231
00:12:12,660 --> 00:12:14,260
‫Lassen Sie uns hier etwas mehr Platz hinzufügen.

232
00:12:14,260 --> 00:12:15,933
‫Ich denke, wir sind bereit, es jetzt auszuprobieren.

233
00:12:18,480 --> 00:12:20,533
‫Wir können tatsächlich eine neue Tour erstellen, indem wir diese Daten hier verwenden.

234
00:12:23,180 --> 00:12:26,273
‫Passen Sie also diese Testtour und diese Daten an

235
00:12:28,600 --> 00:12:30,440
‫und warten wir darauf.

236
00:12:30,440 --> 00:12:32,540
‫Was ist hier passiert?

237
00:12:33,670 --> 00:12:34,620
‫Mal sehen, ah okay.

238
00:12:35,780 --> 00:12:37,000
‫Wir haben ein Problem, dass wir im Grunde zweimal eine Antwort gesendet haben.

239
00:12:37,000 --> 00:12:40,733
‫Also haben wir eine Antwort mit JSON und

240
00:12:40,733 --> 00:12:43,320
‫dann noch einmal mit . senden.

241
00:12:43,320 --> 00:12:45,530
‫Das ist nicht erlaubt.

242
00:12:45,530 --> 00:12:46,620
‫Deshalb bekommen wir hier diesen Fehler.

243
00:12:46,620 --> 00:12:48,990
‫Also eigentlich schön, dass es hier passiert ist, damit ihr

244
00:12:48,990 --> 00:12:50,622
‫wisst, was dieser Standardfehler hier bedeutet.

245
00:12:50,622 --> 00:12:54,871
‫HTTP_HEADERS_SENT kann keine Header setzen, nachdem sie

246
00:12:54,871 --> 00:12:58,330
‫an den Client gesendet wurden.

247
00:12:58,330 --> 00:12:59,163
‫Das passiert, wenn Sie versuchen, zwei Antworten zu senden.

248
00:12:59,163 --> 00:13:02,483
‫Das müssen wir loswerden.

249
00:13:04,642 --> 00:13:06,540
‫Ja, das war der einzige Fehler, den wir hatten.

250
00:13:10,030 --> 00:13:12,163
‫Das sollte jetzt Abhilfe schaffen.

251
00:13:14,350 --> 00:13:16,390
‫Versuche es.

252
00:13:16,390 --> 00:13:17,313
‫Und tatsächlich, los geht's.

253
00:13:19,410 --> 00:13:21,190
‫Wir haben also unsere ID von

254
00:13:21,190 --> 00:13:24,941
‫10, die unser Code für uns erstellt hat, und dann die gesamte Tour,

255
00:13:24,941 --> 00:13:28,930
‫die genau die Daten sind, die wir als Body in unserer Anfrage gesendet haben.

256
00:13:28,930 --> 00:13:32,353
‫Jetzt ist die Sache, dass wenn wir alle Touren

257
00:13:33,850 --> 00:13:36,900
‫hier haben, es noch nicht angezeigt wird.

258
00:13:36,900 --> 00:13:38,363
‫Wenn wir hier runter gehen, ist

259
00:13:39,480 --> 00:13:40,933
‫es eigentlich schon da.

260
00:13:42,520 --> 00:13:44,770
‫Wir haben die von vorhin, also als wir diesen Fehler

261
00:13:44,770 --> 00:13:46,984
‫hatten, hat er tatsächlich auch diese Tour hier erstellt.

262
00:13:46,984 --> 00:13:50,830
‫Dann natürlich die Tour, die wir mit der ID 10 erstellt haben.

263
00:13:50,830 --> 00:13:54,000
‫Diese Tour hier ist also genau die,

264
00:13:54,000 --> 00:13:56,180
‫die gerade erstellt wurde.

265
00:13:56,180 --> 00:13:57,530
‫Wenn wir jetzt tun, Testtour 2, mit der Dauer von nur 5.

266
00:13:58,370 --> 00:14:03,370
‫Probieren wir das mal aus, und wenn ich alle Touren bekomme, dann zeigt

267
00:14:03,890 --> 00:14:05,580
‫sich das auch hier.

268
00:14:05,580 --> 00:14:10,550
‫Ich habe am Anfang gesagt, dass es nicht funktionieren würde, damit es nicht gleich auftauchen

269
00:14:10,550 --> 00:14:12,246
‫würde, weil das nur

270
00:14:12,246 --> 00:14:14,760
‫funktioniert, wenn wir den Server neu starten.

271
00:14:14,760 --> 00:14:19,913
‫Diese Datei, die Tour-einfach.

272
00:14:21,480 --> 00:14:23,610
‫json-Datei, aus der unsere Touren stammen,

273
00:14:23,610 --> 00:14:25,140
‫wird nur am Anfang gelesen, wenn wir den Server starten.

274
00:14:25,140 --> 00:14:28,819
‫Die Sache ist nun, dass jedes Mal, wenn wir etwas in dieser

275
00:14:28,819 --> 00:14:31,420
‫JSON-Datei speichern, auch der Server neu geladen wird.

276
00:14:31,420 --> 00:14:35,180
‫Lass mich dir das beweisen, also wenn ich jetzt auf Speichern

277
00:14:35,180 --> 00:14:38,160
‫drücke, dann schau, was hier unten passiert.

278
00:14:38,160 --> 00:14:40,800
‫Also speichere ich es, und Sie sehen, dass

279
00:14:40,800 --> 00:14:43,180
‫hier unten der Server neu gestartet wurde.

280
00:14:43,180 --> 00:14:44,980
‫Es hat auch den Code formatiert, weil er hübscher ist.

281
00:14:44,980 --> 00:14:47,920
‫Aber was hier zählt, ist, dass dieser Code aktualisiert wurde.

282
00:14:47,920 --> 00:14:50,970
‫Deshalb wird jedes Mal, wenn wir hier mit unserer

283
00:14:50,970 --> 00:14:52,780
‫API etwas speichern, der

284
00:14:52,780 --> 00:14:56,160
‫Server sofort neu geladen und der Inhalt aus der Datei

285
00:14:56,160 --> 00:15:00,230
‫in die Touren neu geladen, und wir können das dann sofort lesen.

286
00:15:00,230 --> 00:15:02,080
‫Deshalb haben wir

287
00:15:03,020 --> 00:15:06,400
‫sofort Zugriff auf alle neu erstellten Touren.

288
00:15:06,400 --> 00:15:08,563
‫Sinn ergeben?

289
00:15:09,660 --> 00:15:10,550
‫Nun, wenn

290
00:15:10,550 --> 00:15:13,970
‫nicht, stellen Sie bitte einfach Ihre Fragen und natürlich den Fragen-und-Antwort-Bereich, oder?

