﻿1
00:00:00,980 --> 00:00:02,760
‫Istruttore: Va bene, in

2
00:00:02,760 --> 00:00:04,720
‫questa lezione parleremo di qualcosa

3
00:00:04,720 --> 00:00:06,910
‫chiamato percorsi nidificati, cosa sono, perché

4
00:00:06,910 --> 00:00:08,690
‫ne abbiamo bisogno

5
00:00:08,690 --> 00:00:11,163
‫e come possiamo effettivamente implementarli in Express.

6
00:00:12,944 --> 00:00:15,470
‫Pensiamo per un secondo a

7
00:00:15,470 --> 00:00:18,566
‫come in pratica vogliamo creare una nuova recensione.

8
00:00:18,566 --> 00:00:21,520
‫Fino a questo punto, durante la creazione di

9
00:00:21,520 --> 00:00:24,020
‫nuove recensioni, abbiamo sempre passato manualmente

10
00:00:24,020 --> 00:00:26,920
‫l'ID tour e l'ID utente nel corpo della

11
00:00:26,920 --> 00:00:30,300
‫richiesta, quindi abbiamo creato la recensione da lì, a destra.

12
00:00:30,300 --> 00:00:33,180
‫Va bene durante lo sviluppo, ma ovviamente non è

13
00:00:33,180 --> 00:00:34,980
‫così che verrà creata una

14
00:00:34,980 --> 00:00:36,433
‫recensione nel mondo reale.

15
00:00:37,680 --> 00:00:40,610
‫Quindi, nel mondo reale, l'ID utente

16
00:00:40,610 --> 00:00:44,010
‫dovrebbe idealmente provenire dall'utente attualmente connesso e

17
00:00:44,010 --> 00:00:47,740
‫un ID tour dovrebbe provenire dal tour corrente.

18
00:00:47,740 --> 00:00:49,700
‫Questo dovrebbe idealmente essere

19
00:00:49,700 --> 00:00:51,877
‫codificato direttamente nel percorso, quindi nell'URL.

20
00:00:53,020 --> 00:00:56,300
‫Quando invii una richiesta di post per

21
00:00:56,300 --> 00:01:00,140
‫una nuova recensione, vorremmo inviarla a un URL come questo.

22
00:01:00,140 --> 00:01:03,143
‫Scriviamolo qui solo come commento.

23
00:01:05,826 --> 00:01:08,869
‫Idealmente, vorremmo fare una richiesta

24
00:01:08,869 --> 00:01:13,869
‫per il post, per il tour e l'ID del tour,

25
00:01:15,490 --> 00:01:19,343
‫non importa qui, e poi le recensioni.

26
00:01:20,650 --> 00:01:23,100
‫Ok, ora, proprio come questo,

27
00:01:23,100 --> 00:01:25,580
‫abbiamo l'ID tour direttamente nell'URL

28
00:01:25,580 --> 00:01:28,030
‫e l'ID utente verrà anche

29
00:01:28,030 --> 00:01:29,913
‫dall'utente attualmente connesso.

30
00:01:31,130 --> 00:01:35,330
‫Quello che vediamo qui è ora un cosiddetto percorso annidato.

31
00:01:35,330 --> 00:01:37,330
‫Hanno molto senso quando

32
00:01:37,330 --> 00:01:40,570
‫c'è una chiara relazione genitore-figlio tra le risorse.

33
00:01:40,570 --> 00:01:43,840
‫Questo è chiaramente il caso qui, giusto.

34
00:01:43,840 --> 00:01:47,530
‫Le recensioni sono chiaramente figlie del tour.

35
00:01:47,530 --> 00:01:49,320
‫Questo percorso nidificato

36
00:01:49,320 --> 00:01:51,580
‫significa fondamentalmente accedere alla risorsa

37
00:01:51,580 --> 00:01:54,810
‫delle recensioni sulla risorsa del tour, va bene.

38
00:01:54,810 --> 00:01:57,420
‫Allo stesso modo, vorremmo anche accedere

39
00:01:57,420 --> 00:02:01,193
‫alle recensioni di un determinato tour allo stesso modo.

40
00:02:02,310 --> 00:02:05,560
‫Diciamo quindi una richiesta get, e di

41
00:02:05,560 --> 00:02:09,650
‫nuovo per tour slash tour ID e slash recensioni.

42
00:02:09,650 --> 00:02:11,390
‫Questo ci farebbe quindi idealmente

43
00:02:11,390 --> 00:02:13,583
‫ottenere tutte le recensioni per questo tour.

44
00:02:14,970 --> 00:02:17,110
‫Potremmo andare anche oltre

45
00:02:17,110 --> 00:02:19,653
‫e specificare anche l'ID della recensione.

46
00:02:21,840 --> 00:02:24,490
‫Quindi di nuovo, solo una stringa casuale qui,

47
00:02:24,490 --> 00:02:25,703
‫ma hai capito.

48
00:02:26,643 --> 00:02:28,550
‫In questo caso, otterremmo una revisione

49
00:02:28,550 --> 00:02:30,420
‫con l'ID di questo

50
00:02:30,420 --> 00:02:32,603
‫qui durante il tour con questo ID.

51
00:02:34,140 --> 00:02:36,520
‫Ecco a cosa servono i percorsi nidificati.

52
00:02:36,520 --> 00:02:40,220
‫Questo è un modo molto più semplice di

53
00:02:40,220 --> 00:02:44,795
‫leggere e comprendere come funziona l'API per i nostri utenti API.

54
00:02:44,795 --> 00:02:47,130
‫È molto più facile quindi scherzare con

55
00:02:47,130 --> 00:02:50,100
‫le stringhe di query e tutte quelle cose del genere.

56
00:02:50,100 --> 00:02:52,580
‫Inoltre, mostra davvero come ci

57
00:02:52,580 --> 00:02:55,850
‫sia questa chiara relazione tra queste risorse,

58
00:02:55,850 --> 00:02:58,610
‫ancora una volta, recensioni e tour.

59
00:02:58,610 --> 00:03:00,410
‫Va bene, ma basta parlare.

60
00:03:00,410 --> 00:03:02,510
‫Ora implementiamolo effettivamente a partire

61
00:03:02,510 --> 00:03:04,600
‫dal percorso post.

62
00:03:04,600 --> 00:03:08,100
‫Ora, poiché il percorso inizia effettivamente con i tour, verrà

63
00:03:08,100 --> 00:03:11,150
‫ovviamente reindirizzato al nostro router del tour.

64
00:03:11,150 --> 00:03:14,600
‫Almeno per ora, dovremo implementare questa funzionalità nel tour

65
00:03:14,600 --> 00:03:16,890
‫router, anche se sembra un po'

66
00:03:16,890 --> 00:03:19,530
‫controintuitivo dato che in realtà abbiamo a

67
00:03:19,530 --> 00:03:21,793
‫che fare con le recensioni.

68
00:03:23,190 --> 00:03:26,650
‫Ma ancora una volta, per ora, implementiamolo in questo modo.

69
00:03:26,650 --> 00:03:29,690
‫Veniamo al nostro router utente e per prima

70
00:03:32,040 --> 00:03:33,550
‫cosa, poiché utilizzeremo le

71
00:03:33,550 --> 00:03:34,870
‫recensioni qui,

72
00:03:34,870 --> 00:03:37,483
‫dobbiamo importare il controller di revisione.

73
00:03:42,370 --> 00:03:46,140
‫Il controller richiede.

74
00:03:46,140 --> 00:03:49,763
‫Forse avrei dovuto semplicemente copiare la riga di prima.

75
00:03:52,080 --> 00:03:55,693
‫Controller e controller di revisione.

76
00:03:57,380 --> 00:04:01,010
‫Bene, ora qui in fondo, e prendiamo il

77
00:04:01,010 --> 00:04:02,730
‫nostro codice per questo

78
00:04:02,730 --> 00:04:04,970
‫esempio da qui solo come

79
00:04:08,100 --> 00:04:09,223
‫riferimento.

80
00:04:13,518 --> 00:04:15,750
‫In modo che ora possiamo effettivamente implementarlo.

81
00:04:15,750 --> 00:04:18,910
‫Il percorso che implementeremo qui

82
00:04:20,960 --> 00:04:24,673
‫è slash ID e quindi recensioni.

83
00:04:26,240 --> 00:04:28,600
‫Questa parte del tour qui, come già

84
00:04:28,600 --> 00:04:30,457
‫sai, è dove abbiamo

85
00:04:30,457 --> 00:04:33,300
‫montato questo router e quindi non dobbiamo ripeterlo qui.

86
00:04:33,300 --> 00:04:37,090
‫Ma poi, abbiamo l'ID del tour e poi le recensioni tagliate.

87
00:04:37,090 --> 00:04:38,590
‫Per renderlo davvero chiaro, chiamiamolo

88
00:04:38,590 --> 00:04:40,440
‫effettivamente ID tour poiché ora abbiamo

89
00:04:42,850 --> 00:04:44,040
‫a che fare

90
00:04:44,040 --> 00:04:45,440
‫con diverse risorse qui.

91
00:04:45,440 --> 00:04:48,363
‫Quindi è un po' più chiaro chiamarlo davvero per quello che è.

92
00:04:52,885 --> 00:04:55,844
‫Ora vogliamo implementare la revisione della creazione.

93
00:04:55,844 --> 00:04:58,094
‫Protezione dal punto del controller di autenticazione.

94
00:05:00,960 --> 00:05:04,403
‫Vogliamo anche limitare l'accesso solo agli utenti

95
00:05:11,472 --> 00:05:15,805
‫e quindi, naturalmente, il nostro controller di revisione non crea

96
00:05:19,740 --> 00:05:22,033
‫una recensione, va bene.

97
00:05:22,980 --> 00:05:26,000
‫Ancora una volta, è un po' strano e

98
00:05:26,000 --> 00:05:28,880
‫controintuitivo chiamare effettivamente il controller di revisione

99
00:05:28,880 --> 00:05:30,593
‫qui nel percorso dell'utente.

100
00:05:31,620 --> 00:05:34,273
‫Beh, in realtà, non dovrebbe essere nel percorso dell'utente.

101
00:05:35,200 --> 00:05:36,990
‫Per qualche ragione, ho aperto

102
00:05:36,990 --> 00:05:41,140
‫i percorsi utente e non i percorsi tour, quindi mi dispiace per quello.

103
00:05:41,140 --> 00:05:44,403
‫Tagliamo tutto da qui, veniamo ai nostri percorsi turistici, e in

104
00:05:45,420 --> 00:05:47,320
‫realtà facciamolo qui in fondo.

105
00:05:49,697 --> 00:05:52,523
‫Ovviamente dobbiamo anche procurarci il controller di revisione.

106
00:05:56,490 --> 00:05:59,580
‫Quindi ora dovremmo essere a posto.

107
00:05:59,580 --> 00:06:01,640
‫Quello era uno stupido bug.

108
00:06:01,640 --> 00:06:03,920
‫Ma comunque, quello che stavo dicendo

109
00:06:03,920 --> 00:06:06,610
‫è che non ha molto senso chiamare effettivamente

110
00:06:06,610 --> 00:06:09,720
‫il controller di revisione nel percorso del tour, ma ancora

111
00:06:09,720 --> 00:06:12,300
‫una volta, per ora, dobbiamo farlo in questo

112
00:06:12,300 --> 00:06:15,000
‫modo perché il percorso inizia con il tour.

113
00:06:15,000 --> 00:06:17,680
‫È questo router che verrà attivato.

114
00:06:17,680 --> 00:06:19,460
‫Nel prossimo video lo risolveremo,

115
00:06:19,460 --> 00:06:21,350
‫ma per ora vogliamo solo

116
00:06:21,350 --> 00:06:22,870
‫farlo funzionare e

117
00:06:22,870 --> 00:06:25,840
‫acquisire familiarità con l'intero concetto di percorsi nidificati.

118
00:06:25,840 --> 00:06:29,540
‫Ad ogni modo, ora abbiamo il nostro ID tour proprio nel

119
00:06:29,540 --> 00:06:30,880
‫percorso, ma ovviamente

120
00:06:30,880 --> 00:06:34,250
‫dobbiamo far sapere al controller che ora dovrebbe utilizzare questo

121
00:06:34,250 --> 00:06:37,113
‫ID tour e anche l'ID dell'utente attualmente connesso.

122
00:06:38,100 --> 00:06:39,240
‫Ora dobbiamo andare

123
00:06:39,240 --> 00:06:41,400
‫avanti e aggiornare il nostro controller di

124
00:06:43,630 --> 00:06:45,433
‫revisione proprio qui a creare recensione.

125
00:06:53,817 --> 00:06:56,370
‫Quello che faremo è questo.

126
00:06:56,370 --> 00:07:01,360
‫Diremo, se non c'è richiesta dot body dot tour, quindi

127
00:07:02,990 --> 00:07:06,210
‫in pratica se non abbiamo specificato l'ID

128
00:07:06,210 --> 00:07:08,180
‫del tour e il

129
00:07:08,180 --> 00:07:10,870
‫corpo, allora vogliamo definirlo come quello

130
00:07:10,870 --> 00:07:12,603
‫proveniente dall'URL.

131
00:07:14,080 --> 00:07:17,373
‫Req dot body dot tour è uguale a

132
00:07:19,210 --> 00:07:21,910
‫request, e ora ricorda come

133
00:07:21,910 --> 00:07:25,850
‫quel parametro URL è su request dot params e poi,

134
00:07:25,850 --> 00:07:29,603
‫naturalmente, il nome del parametro stesso, quindi tour ID.

135
00:07:32,930 --> 00:07:34,640
‫Questa è la prima parte e

136
00:07:34,640 --> 00:07:37,060
‫la seconda, dobbiamo fare lo stesso anche con l'utente.

137
00:07:38,450 --> 00:07:41,740
‫Se non c'è una richiesta

138
00:07:41,740 --> 00:07:46,710
‫utente punto, o in realtà, richiesta punto corpo punto

139
00:07:46,710 --> 00:07:50,180
‫utente, allora la richiesta punto corpo

140
00:07:51,910 --> 00:07:56,910
‫punto utente dovrebbe essere richiesta punto utente punto ID.

141
00:07:58,750 --> 00:08:01,520
‫E ancora, riceviamo la richiesta dell'utente

142
00:08:01,520 --> 00:08:05,193
‫punto dal middleware di protezione, ed è proprio così.

143
00:08:06,130 --> 00:08:11,130
‫Mettiamo solo un commento qui, percorsi nidificati.

144
00:08:13,390 --> 00:08:15,120
‫Con questo, facciamo in

145
00:08:15,120 --> 00:08:17,700
‫modo che l'utente possa ancora specificare manualmente

146
00:08:17,700 --> 00:08:19,603
‫il tour e l'ID utente.

147
00:08:20,677 --> 00:08:21,860
‫Quello che stiamo

148
00:08:21,860 --> 00:08:24,250
‫facendo qui è semplicemente definirli quando non sono

149
00:08:24,250 --> 00:08:27,343
‫presenti o quando non sono specificati nel corpo della richiesta.

150
00:08:28,827 --> 00:08:32,263
‫Questo dovrebbe essere sufficiente per testarlo ora.

151
00:08:33,410 --> 00:08:35,320
‫Va bene, diamo un'occhiata agli

152
00:08:35,320 --> 00:08:37,853
‫utenti che abbiamo ottenuto a questo punto.

153
00:08:41,820 --> 00:08:43,610
‫Abbiamo questi due utenti

154
00:08:43,610 --> 00:08:46,610
‫regolari, abbiamo l'utente di prova e abbiamo Jonas

155
00:08:46,610 --> 00:08:49,390
‫qui, ma abbiamo dimenticato la sua password.

156
00:08:49,390 --> 00:08:51,550
‫Andiamo avanti, eliminiamo questo

157
00:08:51,550 --> 00:08:53,730
‫utente e creiamone uno nuovo.

158
00:08:53,730 --> 00:08:58,730
‫Va bene, quindi in Compass, gli utenti, ed

159
00:09:00,400 --> 00:09:01,773
‫è questo.

160
00:09:07,220 --> 00:09:09,723
‫Ricreiamo sostanzialmente questo utente.

161
00:09:11,220 --> 00:09:14,793
‫Tutto ciò di cui abbiamo veramente bisogno sono questi due dati.

162
00:09:17,110 --> 00:09:18,543
‫In realtà questo è iscriversi.

163
00:09:26,820 --> 00:09:28,310
‫Lo stesso nome, la

164
00:09:29,600 --> 00:09:31,743
‫stessa email e anche la stessa password.

165
00:09:35,657 --> 00:09:38,690
‫A questo punto, abbiamo già effettuato l'accesso

166
00:09:38,690 --> 00:09:42,170
‫come questo utente, il cosiddetto Jonas, teniamolo a mente.

167
00:09:42,170 --> 00:09:44,950
‫Successivamente, dobbiamo scegliere su quale tour

168
00:09:44,950 --> 00:09:47,600
‫vogliamo effettivamente creare la recensione.

169
00:09:47,600 --> 00:09:49,790
‫Facciamolo di nuovo qui a The Forest

170
00:09:49,790 --> 00:09:52,773
‫Hiker in modo da ottenere più recensioni sullo stesso tour.

171
00:09:54,240 --> 00:09:55,090
‫Quello che andremo

172
00:09:55,090 --> 00:09:57,380
‫a fare ora è fondamentalmente accedere a quel percorso annidato

173
00:09:57,380 --> 00:09:58,430
‫che abbiamo appena creato.

174
00:10:02,135 --> 00:10:03,350
‫Abbiamo i tour.

175
00:10:03,350 --> 00:10:05,980
‫Ora dobbiamo ottenere l'ID del tour

176
00:10:05,980 --> 00:10:08,050
‫e, ancora, useremo questo

177
00:10:08,050 --> 00:10:09,323
‫per The

178
00:10:12,490 --> 00:10:16,430
‫Forest Hiker, quindi tagliamo le recensioni e poi

179
00:10:16,430 --> 00:10:18,283
‫ricorderemo un post.

180
00:10:19,230 --> 00:10:21,963
‫Poi bisogna specificare anche l'autorizzazione, quindi

181
00:10:23,100 --> 00:10:27,010
‫bearer token, e poi ora nel corpo, non ci

182
00:10:27,010 --> 00:10:28,610
‫resta che specificare

183
00:10:28,610 --> 00:10:30,673
‫il rating e la recensione.

184
00:10:36,830 --> 00:10:37,860
‫Il punteggio è

185
00:10:45,220 --> 00:10:47,160
‫cinque e poi del testo qui.

186
00:10:47,160 --> 00:10:50,913
‫Quindi questo dovrebbe essere già sufficiente per provarlo.

187
00:10:51,920 --> 00:10:52,753
‫Mandiamolo.

188
00:10:53,769 --> 00:10:56,520
‫Ora non abbiamo il permesso di

189
00:10:56,520 --> 00:11:00,100
‫eseguire questa azione, per qualche motivo, quindi è strano.

190
00:11:00,100 --> 00:11:03,460
‫Ci siamo registrati come questo Jonas, e in

191
00:11:03,460 --> 00:11:05,610
‫realtà è solo un utente normale

192
00:11:06,490 --> 00:11:08,203
‫come dovrebbe essere.

193
00:11:09,090 --> 00:11:11,533
‫Diamo un'occhiata al nostro router.

194
00:11:13,154 --> 00:11:17,170
‫Qui, oh ok, è l'utente, non gli utenti.

195
00:11:19,120 --> 00:11:22,930
‫Un piccolo bug come quello può, come vedi,

196
00:11:22,930 --> 00:11:27,333
‫mandare in crash l'intero percorso, quindi proviamo di nuovo ora.

197
00:11:28,530 --> 00:11:31,750
‫E ora otteniamo effettivamente la revisione

198
00:11:31,750 --> 00:11:35,300
‫finale con il tour e l'utente definiti correttamente.

199
00:11:35,300 --> 00:11:38,140
‫Almeno lo spero.

200
00:11:38,140 --> 00:11:41,250
‫L'ID del tour, vedi, finisce qui nel 951, e quindi

201
00:11:41,250 --> 00:11:43,260
‫è esattamente lo stesso qui.

202
00:11:43,260 --> 00:11:47,640
‫L'utente è questo 1f3 e quindi, in effetti, è

203
00:11:47,640 --> 00:11:49,343
‫esattamente lo stesso.

204
00:11:50,660 --> 00:11:53,280
‫Va bene, e quindi ora dovremmo essere

205
00:11:53,280 --> 00:11:56,170
‫effettivamente in grado di confermarlo, e quindi questo

206
00:11:56,170 --> 00:11:59,230
‫tour qui in realtà è già quello su cui

207
00:11:59,230 --> 00:12:01,165
‫stavamo creando la nuova recensione.

208
00:12:01,165 --> 00:12:04,460
‫Diamo un'occhiata, e in effetti ora

209
00:12:04,460 --> 00:12:06,660
‫abbiamo due recensioni.

210
00:12:06,660 --> 00:12:09,140
‫Questo è quello che abbiamo appena creato.

211
00:12:09,140 --> 00:12:11,790
‫È nel tour corretto e,

212
00:12:11,790 --> 00:12:15,450
‫naturalmente, anche nell'utente corretto con il nome di Jonas.

213
00:12:15,450 --> 00:12:17,973
‫Fantastico, è davvero fantastico.

214
00:12:19,620 --> 00:12:22,520
‫Andiamo avanti e salviamo questo.

215
00:12:22,520 --> 00:12:24,720
‫Creerò di nuovo una nuova cartella qui.

216
00:12:25,610 --> 00:12:29,473
‫Lo chiamerò tour slash recensioni.

217
00:12:31,086 --> 00:12:33,663
‫Ora qui, creiamo,

218
00:12:34,705 --> 00:12:39,705
‫creiamo una nuova recensione in tour.

219
00:12:46,220 --> 00:12:49,537
‫Dovrebbe essere davvero fuori e proprio così.

220
00:12:54,397 --> 00:12:56,103
‫In realtà mettiamolo qui.

221
00:12:57,450 --> 00:13:01,293
‫Non funziona davvero come dovrebbe per qualche motivo.

222
00:13:02,130 --> 00:13:03,403
‫E qui andiamo.

223
00:13:05,800 --> 00:13:08,260
‫Va bene, ha funzionato bene,

224
00:13:08,260 --> 00:13:10,870
‫ma come ho detto prima, l'implementazione è

225
00:13:10,870 --> 00:13:13,450
‫un po' confusa a questo punto.

226
00:13:13,450 --> 00:13:16,890
‫E ancora, questo perché abbiamo definito tecnicamente un percorso

227
00:13:16,890 --> 00:13:19,333
‫di revisione nel router del tour.

228
00:13:20,220 --> 00:13:22,650
‫È un po' confuso, quindi nel prossimo

229
00:13:22,650 --> 00:13:24,193
‫video lo sistemeremo.

