﻿1
00:00:01,530 --> 00:00:03,010
‫Istruttore: Nell'ultimo paio di

2
00:00:03,010 --> 00:00:05,020
‫lezioni, spero che tu abbia iniziato a

3
00:00:05,020 --> 00:00:06,870
‫comprendere i fondamenti dello sviluppo di Express.

4
00:00:06,870 --> 00:00:10,190
‫E quindi ora è il momento perfetto per approfondire

5
00:00:10,190 --> 00:00:11,750
‫il funzionamento di Express,

6
00:00:11,750 --> 00:00:14,380
‫e per questo abbiamo bisogno di parlare

7
00:00:14,380 --> 00:00:16,633
‫del middleware e del ciclo richiesta-risposta.

8
00:00:17,550 --> 00:00:20,670
‫Quindi, l'essenza dello sviluppo Express è

9
00:00:20,670 --> 00:00:21,770
‫comprendere

10
00:00:21,770 --> 00:00:24,960
‫e quindi utilizzare il ciclo richiesta-risposta.

11
00:00:24,960 --> 00:00:27,280
‫Quindi voglio rendere l'idea davvero

12
00:00:27,280 --> 00:00:29,890
‫chiara in modo visivo in questo video.

13
00:00:29,890 --> 00:00:32,410
‫Quindi, per avviare il ciclo di

14
00:00:32,410 --> 00:00:36,720
‫richiesta-risposta, o l'app Express riceve una richiesta quando qualcuno colpisce un server

15
00:00:36,720 --> 00:00:39,310
‫per il quale creerà quindi un oggetto

16
00:00:39,310 --> 00:00:41,170
‫di richiesta e risposta.

17
00:00:41,170 --> 00:00:43,530
‫Tali dati verranno quindi

18
00:00:43,530 --> 00:00:48,160
‫utilizzati ed elaborati per generare e restituire una risposta significativa.

19
00:00:48,160 --> 00:00:50,740
‫Ora, per elaborare quei dati,

20
00:00:50,740 --> 00:00:53,740
‫in Express usiamo qualcosa chiamato middleware,

21
00:00:53,740 --> 00:00:57,220
‫che può manipolare la richiesta o l'oggetto risposta.

22
00:00:57,220 --> 00:01:00,680
‫O esegui davvero qualsiasi altro codice che ci piace.

23
00:01:00,680 --> 00:01:02,820
‫Quindi il middleware non deve

24
00:01:02,820 --> 00:01:05,230
‫sempre riguardare solo la richiesta o l'oggetto

25
00:01:05,230 --> 00:01:08,070
‫risposta, ma di solito riguarda principalmente la richiesta.

26
00:01:08,070 --> 00:01:10,880
‫E in realtà, abbiamo già usato il middleware prima.

27
00:01:10,880 --> 00:01:15,130
‫Abbiamo utilizzato Express dot JSON per ottenere l'accesso al corpo della richiesta

28
00:01:15,130 --> 00:01:16,600
‫sull'oggetto della richiesta.

29
00:01:16,600 --> 00:01:18,250
‫Ricordati che?

30
00:01:18,250 --> 00:01:20,600
‫Ora si chiama middleware ricorda

31
00:01:20,600 --> 00:01:23,930
‫perché è una funzione che viene eseguita tra,

32
00:01:23,930 --> 00:01:26,570
‫quindi nel mezzo della ricezione della richiesta

33
00:01:26,570 --> 00:01:28,540
‫e dell'invio della risposta.

34
00:01:28,540 --> 00:01:31,020
‫E in effetti, possiamo dire che in

35
00:01:31,020 --> 00:01:33,010
‫Express tutto è middleware.

36
00:01:33,010 --> 00:01:35,270
‫Anche le nostre definizioni di percorso.

37
00:01:35,270 --> 00:01:38,460
‫Quindi, ancora una volta, anche quando abbiamo definito le nostre

38
00:01:38,460 --> 00:01:42,120
‫rotte, possiamo pensare alle funzioni del gestore delle rotte che abbiamo

39
00:01:42,120 --> 00:01:43,600
‫scritto come funzioni middleware.

40
00:01:43,600 --> 00:01:45,120
‫Sono semplicemente funzioni

41
00:01:45,120 --> 00:01:48,010
‫middleware che vengono eseguite solo per determinati percorsi.

42
00:01:48,010 --> 00:01:49,290
‫Va bene?

43
00:01:49,290 --> 00:01:52,840
‫Ora alcuni esempi di middleware sono Express dot JSON, che

44
00:01:52,840 --> 00:01:54,860
‫è anche chiamato body-parser e che

45
00:01:54,860 --> 00:01:56,870
‫abbiamo già usato in precedenza.

46
00:01:56,870 --> 00:01:59,100
‫O alcune funzionalità di

47
00:01:59,100 --> 00:02:02,130
‫registrazione o l'impostazione di intestazioni http specifiche.

48
00:02:02,130 --> 00:02:05,760
‫Le possibilità sono davvero infinite con il middleware.

49
00:02:05,760 --> 00:02:08,460
‫Va bene, e ora in termini più

50
00:02:08,460 --> 00:02:11,000
‫tecnici, diciamo che tutto il middleware

51
00:02:11,000 --> 00:02:12,370
‫che usiamo nella

52
00:02:12,370 --> 00:02:15,200
‫nostra app si chiama stack del middleware.

53
00:02:15,200 --> 00:02:17,720
‫Ciò che è molto importante tenere a mente

54
00:02:17,720 --> 00:02:20,230
‫qui è che l'ordine del middleware nello

55
00:02:20,230 --> 00:02:22,540
‫stack è effettivamente definito dall'ordine in

56
00:02:22,540 --> 00:02:24,500
‫cui sono definiti nel codice.

57
00:02:24,500 --> 00:02:27,110
‫Quindi un middleware che appare per primo nel

58
00:02:27,110 --> 00:02:29,920
‫codice, viene eseguito prima di uno che appare in seguito.

59
00:02:29,920 --> 00:02:33,170
‫E quindi l'ordine del codice conta molto in Express.

60
00:02:33,170 --> 00:02:34,360
‫Va bene?

61
00:02:34,360 --> 00:02:38,010
‫Ora, puoi pensare all'intero processo in questo modo, la nostra

62
00:02:38,010 --> 00:02:40,120
‫richiesta e l'oggetto di risposta

63
00:02:40,120 --> 00:02:41,890
‫che sono stati creati

64
00:02:41,890 --> 00:02:45,310
‫all'inizio passano attraverso ogni middleware in cui vengono elaborati

65
00:02:45,310 --> 00:02:48,710
‫o dove viene eseguito solo qualche altro codice.

66
00:02:48,710 --> 00:02:51,370
‫Quindi, alla fine di ogni funzione middleware, viene

67
00:02:51,370 --> 00:02:53,150
‫chiamata una funzione successiva, che

68
00:02:53,150 --> 00:02:55,340
‫è una funzione a cui abbiamo accesso

69
00:02:55,340 --> 00:02:56,860
‫in ogni funzione middleware.

70
00:02:56,860 --> 00:02:59,580
‫Proprio come gli oggetti richiesta e risposta.

71
00:02:59,580 --> 00:03:02,960
‫E lo vedremo ovviamente in codice nel prossimo video.

72
00:03:02,960 --> 00:03:05,375
‫Quindi, quando chiamiamo la funzione

73
00:03:05,375 --> 00:03:08,470
‫successiva, il prossimo middleware nello stack verrà eseguito

74
00:03:08,470 --> 00:03:11,960
‫con lo stesso identico oggetto di richiesta e risposta.

75
00:03:11,960 --> 00:03:14,480
‫E questo accade con tutti i middleware

76
00:03:14,480 --> 00:03:16,460
‫fino a raggiungere l'ultimo.

77
00:03:16,460 --> 00:03:17,830
‫E così, proprio

78
00:03:17,830 --> 00:03:20,360
‫in questo modo, la richiesta iniziale e

79
00:03:20,360 --> 00:03:23,400
‫l'oggetto risposta passano attraverso ogni middleware passo dopo passo.

80
00:03:23,400 --> 00:03:25,490
‫E puoi pensare a questo

81
00:03:25,490 --> 00:03:29,190
‫intero processo come una sorta di pipeline in cui passano i

82
00:03:29,190 --> 00:03:33,440
‫nostri dati, proprio come è stato convogliato dalla richiesta alla risposta finale.

83
00:03:33,440 --> 00:03:34,472
‫Va bene?

84
00:03:34,472 --> 00:03:36,900
‫A proposito di quest'ultima funzione middleware, di

85
00:03:36,900 --> 00:03:40,230
‫solito è un gestore di route proprio come abbiamo codificato prima.

86
00:03:40,230 --> 00:03:43,250
‫Quindi in questo gestore in realtà non chiamiamo la funzione

87
00:03:43,250 --> 00:03:45,270
‫successiva per passare al middleware successivo.

88
00:03:45,270 --> 00:03:47,950
‫Invece, inviamo finalmente i dati di

89
00:03:47,950 --> 00:03:49,800
‫risposta al client.

90
00:03:49,800 --> 00:03:50,633
‫E

91
00:03:50,633 --> 00:03:53,983
‫così, finiamo il cosiddetto ciclo di richiesta-risposta.

92
00:03:55,380 --> 00:03:58,590
‫Quindi il ciclo richiesta-risposta è davvero tutto ciò di

93
00:03:58,590 --> 00:04:00,900
‫cui abbiamo parlato qui insieme.

94
00:04:00,900 --> 00:04:03,040
‫Inizia con la richiesta in entrata,

95
00:04:03,040 --> 00:04:05,980
‫quindi esegue passo dopo passo tutto il middleware

96
00:04:05,980 --> 00:04:07,240
‫nello stack del

97
00:04:07,240 --> 00:04:10,513
‫middleware e infine invia la risposta per completare il ciclo.

98
00:04:11,370 --> 00:04:13,900
‫Quindi vedi, non è davvero complicato.

99
00:04:13,900 --> 00:04:16,450
‫In realtà è solo un processo lineare.

100
00:04:16,450 --> 00:04:19,200
‫Ma vorrei che qualcuno mi avesse mostrato qualcosa

101
00:04:19,200 --> 00:04:22,000
‫di simile quando stavo imparando a creare app Express.

102
00:04:22,000 --> 00:04:23,420
‫Voglio dire, potrei

103
00:04:23,420 --> 00:04:26,090
‫costruirli, ma all'inizio non capivo davvero

104
00:04:26,090 --> 00:04:29,230
‫questo intero ciclo di richiesta-risposta come questo.

105
00:04:29,230 --> 00:04:30,760
‫Era molto confuso.

106
00:04:30,760 --> 00:04:33,280
‫Ecco perché ti sto mostrando questo, perché

107
00:04:33,280 --> 00:04:36,710
‫credo che sarà molto, molto, più facile per te

108
00:04:36,710 --> 00:04:38,800
‫passare al corso ora,

109
00:04:38,800 --> 00:04:42,383
‫dopo aver capito esattamente come funzionano le app Express.

