﻿1
00:00:01,330 --> 00:00:02,860
‫Istruttore: Un'altra piccola

2
00:00:02,860 --> 00:00:04,910
‫caratteristica che possiamo aggiungere a

3
00:00:04,910 --> 00:00:08,070
‫un'API è fornire un percorso alias a una richiesta

4
00:00:08,070 --> 00:00:09,660
‫che potrebbe essere molto

5
00:00:09,660 --> 00:00:11,963
‫popolare, quindi potrebbe essere richiesta continuamente.

6
00:00:13,400 --> 00:00:15,260
‫E, ad esempio,

7
00:00:15,260 --> 00:00:17,790
‫potremmo voler fornire un percorso specifico

8
00:00:17,790 --> 00:00:20,203
‫per i cinque migliori tour economici.

9
00:00:21,324 --> 00:00:23,530
‫Quindi, se usassimo il nostro percorso normale

10
00:00:23,530 --> 00:00:25,530
‫qui con i filtri e con

11
00:00:25,530 --> 00:00:26,580
‫tutte le

12
00:00:26,580 --> 00:00:29,930
‫funzionalità che abbiamo già, la richiesta sarebbe un po' così.

13
00:00:29,930 --> 00:00:32,090
‫Quindi, sbrighiamoci da tutto questo.

14
00:00:32,090 --> 00:00:34,510
‫Quindi, i cinque tour migliori e più economici.

15
00:00:34,510 --> 00:00:37,340
‫Quindi, questo significa che abbiamo un limite di

16
00:00:39,495 --> 00:00:42,663
‫cinque e poi ordineremo per rating e per prezzo.

17
00:00:44,300 --> 00:00:47,640
‫Quindi, ordina e poi la valutazione

18
00:00:47,640 --> 00:00:52,640
‫media e decrescente, quindi meno la media delle valutazioni.

19
00:00:54,110 --> 00:00:56,750
‫E, nel caso abbiano la stessa media,

20
00:00:56,750 --> 00:00:59,270
‫vogliamo il prezzo più basso possibile.

21
00:00:59,270 --> 00:01:02,353
‫E così, ordineremo anche per prezzo.

22
00:01:03,610 --> 00:01:06,060
‫Diamo subito un'occhiata ai risultati.

23
00:01:06,060 --> 00:01:08,163
‫E, in effetti, abbiamo cinque tour qui.

24
00:01:09,670 --> 00:01:12,560
‫E, Postman fa di nuovo questo scorrimento.

25
00:01:12,560 --> 00:01:18,640
‫Quindi, abbiamo tour con 4. 9, 4.

26
00:01:18,640 --> 00:01:18,640
‫9, 4.

27
00:01:18,640 --> 00:01:20,553
‫9 di nuovo, 4. 8 e 4. 7.

28
00:01:22,250 --> 00:01:27,060
‫E così, questi sono in realtà i nostri cinque tour migliori e più economici.

29
00:01:27,060 --> 00:01:29,150
‫Se dicessimo più economico e migliore,

30
00:01:29,150 --> 00:01:32,270
‫beh, allora forse dovremmo prima ordinare in base al prezzo

31
00:01:32,270 --> 00:01:34,580
‫perché alcuni di loro non sono davvero economici.

32
00:01:34,580 --> 00:01:36,320
‫Ad esempio, questo.

33
00:01:36,320 --> 00:01:40,180
‫Ma abbiamo selezionato, prima, la media.

34
00:01:40,180 --> 00:01:43,160
‫E così, abbiamo ordinato prima per la media più

35
00:01:43,160 --> 00:01:46,700
‫alta e, solo allora in caso di parità, in pratica, solo allora,

36
00:01:46,700 --> 00:01:47,900
‫per il prezzo.

37
00:01:49,120 --> 00:01:51,340
‫Ora, diciamo che questa è una

38
00:01:51,340 --> 00:01:53,350
‫richiesta che viene fatta continuamente e

39
00:01:53,350 --> 00:01:55,060
‫vogliamo fornire un percorso

40
00:01:55,060 --> 00:01:57,453
‫semplice e facile da memorizzare per l'utente.

41
00:01:58,670 --> 00:02:02,110
‫Quindi, andiamo alla nostra app e proviamo a implementarla.

42
00:02:02,110 --> 00:02:06,330
‫E inizieremo dalle loro rotte, quindi tour router.

43
00:02:06,330 --> 00:02:08,703
‫E poi dobbiamo creare un nuovo percorso.

44
00:02:09,550 --> 00:02:12,390
‫E facciamolo qui, proprio in alto.

45
00:02:12,390 --> 00:02:16,913
‫Quindi, router. rotta.

46
00:02:18,650 --> 00:02:21,370
‫E quindi, come chiameremo questo percorso?

47
00:02:21,370 --> 00:02:25,293
‫Bene, diciamo top-5-economici.

48
00:02:26,590 --> 00:02:30,010
‫Quindi, un nome abbastanza semplice, ma funzionerà.

49
00:02:30,010 --> 00:02:31,810
‫E poi, in realtà

50
00:02:31,810 --> 00:02:34,103
‫vogliamo solo ricevere richieste su questa rotta.

51
00:02:35,170 --> 00:02:37,480
‫E quindi, ora è il momento di pensare.

52
00:02:37,480 --> 00:02:41,370
‫Come implementeremo questa funzionalità?

53
00:02:41,370 --> 00:02:43,530
‫Beh, in sostanza, quello che

54
00:02:43,530 --> 00:02:47,273
‫vogliamo è ottenere ancora tutti i tour proprio come qui.

55
00:02:48,210 --> 00:02:51,070
‫E quindi, lasciami andare avanti e iniziare

56
00:02:51,070 --> 00:02:52,930
‫copiando e incollando qui.

57
00:02:52,930 --> 00:02:56,320
‫Quindi, vogliamo ancora usare questa funzione qui perché non

58
00:02:56,320 --> 00:02:57,740
‫ha davvero senso

59
00:02:57,740 --> 00:03:00,900
‫riscrivere tutta la logica che è lì dentro.

60
00:03:00,900 --> 00:03:04,010
‫Ma, prima di poter chiamare questo route ender,

61
00:03:04,010 --> 00:03:06,690
‫fondamentalmente vogliamo precompilare alcuni campi nella stringa

62
00:03:06,690 --> 00:03:07,833
‫di query.

63
00:03:08,970 --> 00:03:10,340
‫Quindi, sappiamo già che

64
00:03:10,340 --> 00:03:13,590
‫la nostra stringa di query dovrebbe essere simile a questa.

65
00:03:13,590 --> 00:03:16,370
‫E, in realtà, possiamo aggiungere altre cose qui.

66
00:03:16,370 --> 00:03:18,070
‫Ma, in sostanza, la nostra

67
00:03:18,070 --> 00:03:19,970
‫stringa di query deve assomigliare a questa.

68
00:03:19,970 --> 00:03:23,100
‫Quindi, la soluzione sarà eseguire un middleware prima

69
00:03:23,100 --> 00:03:26,163
‫di eseguire effettivamente questo gestore getAllTours.

70
00:03:27,080 --> 00:03:28,760
‫E quindi, quella

71
00:03:28,760 --> 00:03:31,843
‫funzione middleware manipolerà l'oggetto query in arrivo.

72
00:03:33,010 --> 00:03:35,210
‫E quindi, questo è un

73
00:03:35,210 --> 00:03:38,150
‫altro esempio molto carino di utilizzo del middleware

74
00:03:38,150 --> 00:03:41,100
‫perché è davvero necessario acquisire familiarità e abituarsi

75
00:03:41,100 --> 00:03:44,150
‫a questo concetto di utilizzo strategico del middleware per

76
00:03:44,150 --> 00:03:47,123
‫modificare l'oggetto della richiesta quando ne abbiamo bisogno.

77
00:03:48,690 --> 00:03:52,100
‫Quindi, aggiungiamolo qui allora.

78
00:03:52,100 --> 00:03:53,920
‫Quindi, tourController.

79
00:03:53,920 --> 00:03:55,150
‫E poi,

80
00:03:55,150 --> 00:03:57,630
‫la funzione middleware che creeremo tra

81
00:03:57,630 --> 00:03:59,733
‫un secondo, che si chiamerà aliasTopTours.

82
00:04:05,060 --> 00:04:08,820
‫Quindi, copiamo quel nome, spostiamoci su tourController e

83
00:04:08,820 --> 00:04:11,843
‫lo metterò qui in cima.

84
00:04:14,100 --> 00:04:15,217
‫Quindi, esportazioni. quindi richiesta, risposta

85
00:04:17,370 --> 00:04:19,823
‫e qual è il terzo argomento di

86
00:04:21,650 --> 00:04:22,600
‫cui abbiamo

87
00:04:22,600 --> 00:04:24,030
‫bisogno nel middleware, ricordi?

88
00:04:24,030 --> 00:04:27,180
‫E so che la sezione Express è già abbastanza

89
00:04:27,180 --> 00:04:30,700
‫lontana a questo punto, ma spero che ricordi che il

90
00:04:30,700 --> 00:04:33,280
‫terzo argomento qui deve essere il prossimo.

91
00:04:33,280 --> 00:04:36,230
‫Quindi, per chiamare il prossimo middleware che

92
00:04:36,230 --> 00:04:38,970
‫si trova nello stack del middleware.

93
00:04:38,970 --> 00:04:40,520
‫Dagli un salvataggio.

94
00:04:45,600 --> 00:04:46,640
‫E così, questo errore dovrebbe scomparire.

95
00:04:46,640 --> 00:04:49,203
‫E quindi, facciamo quello che abbiamo detto che avremmo fatto.

96
00:04:53,554 --> 00:04:55,950
‫Quindi, fondamentalmente per manipolare

97
00:04:55,950 --> 00:04:58,870
‫l'oggetto query in modo che quando

98
00:04:58,870 --> 00:05:01,960
‫raggiunge il gestore getAllTours, sia già diverso.

99
00:05:01,960 --> 00:05:03,423
‫Quindi, prima facciamolo

100
00:05:04,270 --> 00:05:07,160
‫e poi diamo un'occhiata a cosa succede.

101
00:05:07,160 --> 00:05:08,783
‫Quindi, ricorda, il limite sarà impostato a cinque.

102
00:05:10,010 --> 00:05:13,280
‫E ricorda che tutto è stringhe qui e quindi sto

103
00:05:13,280 --> 00:05:15,320
‫impostando anche questo su una stringa.

104
00:05:15,320 --> 00:05:17,370
‫Ora, cos'altro avevamo?

105
00:05:19,350 --> 00:05:20,703
‫Quindi, abbiamo

106
00:05:21,580 --> 00:05:25,200
‫questo tipo, quindi copiamo questo qui e diciamo req. interrogazione. ordinare.

107
00:05:26,400 --> 00:05:30,623
‫Dovrebbe essere questo.

108
00:05:32,247 --> 00:05:35,050
‫E poi, possiamo anche specificare

109
00:05:35,050 --> 00:05:39,230
‫alcuni campi in modo che l'utente non ottenga tutti

110
00:05:39,230 --> 00:05:42,560
‫i campi che abbiamo lì dentro.

111
00:05:42,560 --> 00:05:43,660
‫Quindi, diciamo

112
00:05:46,420 --> 00:05:49,033
‫che vogliamo solo il nome, il prezzo, la

113
00:05:50,070 --> 00:05:52,973
‫media delle valutazioni, il riepilogo e la difficoltà.

114
00:05:54,570 --> 00:05:55,653
‫Dagli un salvataggio

115
00:05:58,650 --> 00:06:02,600
‫e ora tutto ciò di cui abbiamo bisogno è il prossimo, altrimenti questo middleware

116
00:06:02,600 --> 00:06:05,730
‫rimarrà bloccato qui per sempre e non può andare avanti.

117
00:06:05,730 --> 00:06:07,043
‫Quindi, ora cerchiamo di

118
00:06:08,440 --> 00:06:10,420
‫capire un po' meglio cosa accadrà davvero qui.

119
00:06:10,420 --> 00:06:12,690
‫Quindi, non appena qualcuno

120
00:06:12,690 --> 00:06:16,900
‫raggiunge la rotta tra i primi 5 economici, inizieremo.

121
00:06:16,900 --> 00:06:17,733
‫Il primo middleware che verrà eseguito è aliasTopTours.

122
00:06:17,733 --> 00:06:21,470
‫Quindi, la funzione che abbiamo appena creato.

123
00:06:21,470 --> 00:06:23,433
‫Quindi, ciò che farà è

124
00:06:25,420 --> 00:06:27,060
‫impostare queste proprietà dell'oggetto

125
00:06:27,060 --> 00:06:30,070
‫query su questi valori che abbiamo specificato qui.

126
00:06:30,070 --> 00:06:32,490
‫Fondamentalmente precompilare parti dell'oggetto

127
00:06:32,490 --> 00:06:35,800
‫query prima di raggiungere il gestore getAllTours.

128
00:06:35,800 --> 00:06:39,453
‫E così, non appena arriviamo a questa funzione, l'oggetto query

129
00:06:40,720 --> 00:06:43,670
‫è già precompilato, anche se l'utente non

130
00:06:43,670 --> 00:06:46,080
‫ha inserito nessuno di questi parametri

131
00:06:46,080 --> 00:06:47,960
‫nella stringa di query.

132
00:06:47,960 --> 00:06:49,963
‫E quindi, in sostanza, ciò che

133
00:06:51,230 --> 00:06:52,170
‫stiamo facendo

134
00:06:52,170 --> 00:06:55,137
‫qui è precompilare la stringa di query per l'utente in

135
00:06:55,137 --> 00:06:57,650
‫modo che l'utente non debba farlo da solo.

136
00:06:57,650 --> 00:06:59,083
‫E quindi, ora andiamo avanti e proviamo questo.

137
00:07:01,024 --> 00:07:03,683
‫Quindi, sto copiando questo.

138
00:07:04,780 --> 00:07:06,003
‫E qui non ci sono tour.

139
00:07:09,380 --> 00:07:11,090
‫Sono i primi 5 tour.

140
00:07:11,090 --> 00:07:14,463
‫Whoa, cosa sta succedendo qui?

141
00:07:16,710 --> 00:07:18,620
‫Per qualche ragione,

142
00:07:18,620 --> 00:07:21,960
‫non trova questo percorso, quindi torniamo indietro.

143
00:07:21,960 --> 00:07:23,360
‫Quindi, i primi 5 tour.

144
00:07:23,360 --> 00:07:25,013
‫E così, qui nel percorso, ah, ok.

145
00:07:26,140 --> 00:07:28,720
‫Si chiama top-5-economico, quindi il

146
00:07:28,720 --> 00:07:30,690
‫mio errore qui.

147
00:07:30,690 --> 00:07:32,093
‫Quindi, a buon mercato,

148
00:07:33,440 --> 00:07:35,780
‫invialo ora e non è ancora corretto.

149
00:07:35,780 --> 00:07:38,123
‫Ah sì.

150
00:07:40,030 --> 00:07:41,110
‫Certo, devo ancora mettere i tour qui, ovviamente.

151
00:07:41,110 --> 00:07:46,110
‫Quindi, siamo nella risorsa dei tour e l'intero router è

152
00:07:46,140 --> 00:07:48,300
‫montato su questo percorso

153
00:07:48,300 --> 00:07:50,210
‫del tour, ricordalo.

154
00:07:50,210 --> 00:07:53,670
‫E così, è in quei tour, quel tipo

155
00:07:53,670 --> 00:07:55,430
‫di mini applicazione,

156
00:07:55,430 --> 00:07:58,140
‫ricordatelo, che ho creato questo percorso top-5-economico.

157
00:07:58,140 --> 00:08:00,723
‫Quindi, speriamo che ora funzioni.

158
00:08:01,790 --> 00:08:03,470
‫E, in effetti, lo fa.

159
00:08:03,470 --> 00:08:04,703
‫Quindi, ha funzionato, è fantastico.

160
00:08:07,350 --> 00:08:11,030
‫Ora, ovviamente, potremmo fare molte più

161
00:08:11,030 --> 00:08:15,090
‫vie alias qui, ma non è realmente necessario.

162
00:08:15,090 --> 00:08:16,740
‫Volevo solo mostrarti il

163
00:08:16,740 --> 00:08:19,400
‫concetto, mostrarti che può essere una bella

164
00:08:19,400 --> 00:08:21,630
‫funzionalità da aggiungere a qualsiasi API

165
00:08:21,630 --> 00:08:25,380
‫e volevo anche, ancora una volta, mostrarti la potenza dei middleware.

166
00:08:25,380 --> 00:08:27,933
‫Quindi, stiamo parlando di Mongoose qui, ma è

167
00:08:29,160 --> 00:08:30,950
‫comunque molto importante continuare a

168
00:08:30,950 --> 00:08:34,360
‫familiarizzare con i concetti di Express di cui abbiamo parlato prima.

169
00:08:34,360 --> 00:08:37,513
‫Ad ogni modo, ora abbiamo finito con le nostre funzionalità API.

170
00:08:39,040 --> 00:08:42,120
‫Nel prossimo video, faremo il refactoring di

171
00:08:42,120 --> 00:08:44,950
‫tutto questo per rendere l'intero

172
00:08:44,950 --> 00:08:48,690
‫codice un po' più modulare e, ovviamente, migliore.

