﻿1
00:00:01,210 --> 00:00:03,880
‫Instrutor: Então, depois de toda a conversa sobre middleware, vamos

2
00:00:03,880 --> 00:00:05,290
‫agora realmente ir em

3
00:00:05,290 --> 00:00:07,463
‫frente e criar nossas próprias funções de middleware.

4
00:00:09,000 --> 00:00:10,810
‫E, novamente, lembre-se de que

5
00:00:10,810 --> 00:00:12,930
‫na verdade já usamos middleware antes.

6
00:00:12,930 --> 00:00:14,380
‫Então, vamos dar uma olhada nisso.

7
00:00:15,730 --> 00:00:18,350
‫E, em algum lugar aqui.

8
00:00:18,350 --> 00:00:20,450
‫E então, você vê que

9
00:00:20,450 --> 00:00:24,530
‫para usar o middleware, usamos o app dot use, certo?

10
00:00:24,530 --> 00:00:28,190
‫Portanto, o método de uso é aquele que usamos para,

11
00:00:28,190 --> 00:00:30,030
‫sim, realmente usar o middleware.

12
00:00:30,030 --> 00:00:33,800
‫Portanto, adicione middleware à nossa pilha de middleware, certo?

13
00:00:33,800 --> 00:00:37,520
‫Portanto, este express dot json aqui chamando esse método json

14
00:00:37,520 --> 00:00:39,620
‫basicamente retorna uma função, certo?

15
00:00:39,620 --> 00:00:42,650
‫E então essa função é adicionada à pilha de middleware.

16
00:00:42,650 --> 00:00:43,900
‫E assim, semelhante a

17
00:00:43,900 --> 00:00:46,220
‫isso, podemos criar nossa própria função de middleware.

18
00:00:46,220 --> 00:00:48,190
‫Então, vamos fazer isso agora.

19
00:00:48,190 --> 00:00:51,283
‫E então, é claro, ainda precisamos usar o app dot use.

20
00:00:53,840 --> 00:00:56,810
‫Ok, e agora, aqui, tudo o que precisamos fazer

21
00:00:56,810 --> 00:01:00,820
‫é definir o caminho em nossa função que queremos adicionar à pilha de middleware.

22
00:01:00,820 --> 00:01:02,730
‫Então, lembre-se do último vídeo

23
00:01:02,730 --> 00:01:04,520
‫que, claro, em cada

24
00:01:04,520 --> 00:01:08,340
‫função de middleware, temos acesso à solicitação e à resposta, ok?

25
00:01:08,340 --> 00:01:10,663
‫Mas também temos a próxima função.

26
00:01:11,890 --> 00:01:15,060
‫E então, assim, nós editamos como um terceiro argumento

27
00:01:15,060 --> 00:01:17,580
‫para esta função de middleware, ok?

28
00:01:17,580 --> 00:01:19,970
‫E assim, o Express sabe

29
00:01:19,970 --> 00:01:22,370
‫que estamos realmente definindo um middleware aqui.

30
00:01:23,270 --> 00:01:24,820
‫Tudo bem.

31
00:01:24,820 --> 00:01:26,160
‫Agora, assim como

32
00:01:26,160 --> 00:01:28,920
‫antes, na verdade, poderíamos ter chamado este argumento aqui

33
00:01:28,920 --> 00:01:32,950
‫de outra coisa, como X, ou N, ou, isso realmente não importa.

34
00:01:32,950 --> 00:01:34,270
‫O que importa é

35
00:01:34,270 --> 00:01:36,540
‫que é o terceiro argumento para esta função.

36
00:01:36,540 --> 00:01:39,360
‫Portanto, express basicamente passa a próxima função

37
00:01:39,360 --> 00:01:42,780
‫como o terceiro argumento para esta função de middleware.

38
00:01:42,780 --> 00:01:44,500
‫E podemos chamá-lo do que quisermos.

39
00:01:44,500 --> 00:01:47,720
‫Mas, novamente, o próximo é realmente a convenção

40
00:01:47,720 --> 00:01:49,420
‫in express, e

41
00:01:49,420 --> 00:01:52,450
‫para evitar confusão, sempre usamos esse nome, ok?

42
00:01:52,450 --> 00:01:54,250
‫E o mesmo para solicitação

43
00:01:54,250 --> 00:01:57,590
‫e resposta, como mencionei antes, poderíamos chamá-los de outra coisa.

44
00:01:57,590 --> 00:02:00,410
‫Mas a convenção é chamá-los assim.

45
00:02:00,410 --> 00:02:02,470
‫De qualquer forma, vamos apenas registrar algo no

46
00:02:02,470 --> 00:02:04,080
‫console, aqui nesta função de

47
00:02:04,080 --> 00:02:06,650
‫middleware, apenas para que tenhamos algum código para realmente rodar

48
00:02:06,650 --> 00:02:08,423
‫toda vez que houver uma nova solicitação.

49
00:02:09,280 --> 00:02:10,410
‫Vamos dizer

50
00:02:12,510 --> 00:02:13,753
‫olá do middleware.

51
00:02:15,850 --> 00:02:18,980
‫E adicione um pouco de emoji aqui, novamente, para que ele se destaque um pouco.

52
00:02:18,980 --> 00:02:20,133
‫Eu realmente gosto daquilo.

53
00:02:21,876 --> 00:02:22,709
‫E o que acontece aqui?

54
00:02:22,709 --> 00:02:23,750
‫Ah, certo.

55
00:02:23,750 --> 00:02:26,210
‫Então esse é o código que queremos executar aqui.

56
00:02:26,210 --> 00:02:28,690
‫E agora, assim como falamos no último

57
00:02:28,690 --> 00:02:31,780
‫vídeo, na verdade precisamos chamar a próxima função, ok?

58
00:02:31,780 --> 00:02:33,510
‫E se não chamarmos em

59
00:02:33,510 --> 00:02:35,570
‫seguida aqui, bem, o ciclo de solicitação

60
00:02:35,570 --> 00:02:37,750
‫/ resposta realmente ficará preso neste ponto.

61
00:02:37,750 --> 00:02:39,290
‫Não poderíamos seguir

62
00:02:39,290 --> 00:02:43,090
‫em frente e nunca enviaríamos uma resposta ao cliente.

63
00:02:43,090 --> 00:02:45,660
‫Portanto, não posso deixar de enfatizar o quão importante

64
00:02:45,660 --> 00:02:48,773
‫é nunca esquecer de usar o next em todo o seu middleware.

65
00:02:50,230 --> 00:02:52,290
‫Ok, e é tão simples quanto isso.

66
00:02:52,290 --> 00:02:55,880
‫Tudo o que precisamos fazer é especificar a seguir.

67
00:02:55,880 --> 00:02:57,330
‫Então, esse argumento aqui.

68
00:02:57,330 --> 00:02:59,820
‫E então realmente chame essa função assim.

69
00:02:59,820 --> 00:03:00,653
‫OK.

70
00:03:00,653 --> 00:03:03,087
‫E com isso, estamos realmente prontos para testá-lo.

71
00:03:03,087 --> 00:03:04,370
‫E tudo o que

72
00:03:04,370 --> 00:03:06,763
‫precisamos fazer é enviar uma solicitação simples para nossa API.

73
00:03:08,900 --> 00:03:11,270
‫Então, aqui está a API.

74
00:03:11,270 --> 00:03:13,083
‫Vamos fechar este aqui.

75
00:03:14,210 --> 00:03:16,560
‫E então, isso realmente não importa, porque

76
00:03:16,560 --> 00:03:18,980
‫isso, é claro, se aplica a todas as solicitações.

77
00:03:18,980 --> 00:03:20,420
‫Então, vamos voltar.

78
00:03:20,420 --> 00:03:22,760
‫E, de fato, recebemos o hello

79
00:03:22,760 --> 00:03:25,400
‫do middleware registrado em nosso console, certo?

80
00:03:25,400 --> 00:03:26,313
‫Tão bom.

81
00:03:27,240 --> 00:03:30,140
‫E eu queria tocar rapidamente no que acabei

82
00:03:30,140 --> 00:03:32,150
‫de dizer, que é que

83
00:03:32,150 --> 00:03:35,160
‫este middleware aqui se aplica a cada solicitação, certo?

84
00:03:35,160 --> 00:03:37,600
‫E isso porque não especificamos nenhuma rota.

85
00:03:37,600 --> 00:03:40,850
‫Portanto, lembre-se de que antes eu disse que todos os manipuladores de

86
00:03:40,850 --> 00:03:43,710
‫rota aqui são, na verdade, um tipo de middleware.

87
00:03:43,710 --> 00:03:45,200
‫Eles são simplesmente funções de

88
00:03:45,200 --> 00:03:47,790
‫middleware que se aplicam apenas a uma determinada URL.

89
00:03:47,790 --> 00:03:50,010
‫Então, uma certa rota, ok.

90
00:03:50,010 --> 00:03:52,980
‫Mas essas funções de middleware mais simples

91
00:03:52,980 --> 00:03:54,900
‫que definimos aqui,

92
00:03:54,900 --> 00:03:58,080
‫bem, elas se aplicam a cada solicitação.

93
00:03:58,080 --> 00:04:00,070
‫Pelo menos, se o manipulador de

94
00:04:00,070 --> 00:04:01,820
‫rota vier antes deste middleware.

95
00:04:01,820 --> 00:04:04,250
‫Então, deixe-me mostrar algo a você.

96
00:04:04,250 --> 00:04:06,610
‫E vou cortá-lo a partir daqui

97
00:04:06,610 --> 00:04:08,670
‫e agora colocá-lo aqui após

98
00:04:08,670 --> 00:04:10,563
‫este manipulador de rota.

99
00:04:12,240 --> 00:04:14,910
‫Então, o que você acha que vai

100
00:04:14,910 --> 00:04:18,550
‫acontecer agora, quando eu fizer uma ligação para essa rota?

101
00:04:18,550 --> 00:04:20,900
‫Então vamos ver o que acontece.

102
00:04:20,900 --> 00:04:24,040
‫Essa rota exata, aquela que acabei de mostrar, deixe-me enviar

103
00:04:24,040 --> 00:04:25,640
‫a solicitação para ela.

104
00:04:26,520 --> 00:04:29,420
‫E agora vamos voltar e agora não temos

105
00:04:29,420 --> 00:04:31,000
‫olá do middleware.

106
00:04:31,000 --> 00:04:32,460
‫Então, por que isso?

107
00:04:32,460 --> 00:04:34,930
‫Bem, simplesmente porque esse middleware, então

108
00:04:34,930 --> 00:04:36,580
‫esse manipulador de rota

109
00:04:36,580 --> 00:04:40,200
‫aqui, vem antes dessa função de middleware que temos aqui.

110
00:04:40,200 --> 00:04:42,330
‫E esse gerenciador de rota, que neste

111
00:04:42,330 --> 00:04:46,570
‫caso, obter todos os passeios, na verdade encerra o ciclo de resposta da solicitação.

112
00:04:46,570 --> 00:04:48,130
‫Então, vamos dar uma olhada nisso.

113
00:04:48,130 --> 00:04:49,763
‫Portanto, temos todos os passeios.

114
00:04:51,220 --> 00:04:52,600
‫Então, onde fica isso?

115
00:04:52,600 --> 00:04:56,100
‫Sim, então aqui está a função e, ao enviar um

116
00:04:56,100 --> 00:04:58,550
‫resultado com res ponto json,

117
00:04:58,550 --> 00:05:01,090
‫encerramos o ciclo de resposta da solicitação.

118
00:05:01,090 --> 00:05:03,440
‫E então o próximo middleware na

119
00:05:03,440 --> 00:05:05,430
‫pilha, que neste caso,

120
00:05:06,280 --> 00:05:09,700
‫é este, então nosso customizado não será chamado.

121
00:05:09,700 --> 00:05:13,300
‫Novamente, porque o ciclo já terminou, tudo bem.

122
00:05:13,300 --> 00:05:15,930
‫Portanto, certifique-se de entender que esta ordem

123
00:05:15,930 --> 00:05:18,200
‫realmente importa muito no expresso, ok.

124
00:05:18,200 --> 00:05:20,490
‫É fundamental entender que é

125
00:05:20,490 --> 00:05:23,590
‫assim que os aplicativos expressos funcionam, ok.

126
00:05:23,590 --> 00:05:25,760
‫Então, para testar isso, vamos tentar

127
00:05:25,760 --> 00:05:27,730
‫ver o que acontece

128
00:05:27,730 --> 00:05:30,190
‫quando fazemos uma solicitação para essa rota.

129
00:05:30,190 --> 00:05:33,173
‫Então, para obter o tour de atualização ou excluir o tour.

130
00:05:34,900 --> 00:05:38,090
‫Então vamos fazer este aqui, enviar a solicitação

131
00:05:38,090 --> 00:05:41,150
‫aqui, e vamos voltar e agora temos o

132
00:05:41,150 --> 00:05:42,740
‫alô do middleware.

133
00:05:42,740 --> 00:05:45,180
‫Então era isso que esperávamos, certo?

134
00:05:45,180 --> 00:05:48,120
‫Isso porque, é claro, esse middleware aqui agora

135
00:05:48,120 --> 00:05:50,630
‫está antes do manipulador de rotas.

136
00:05:50,630 --> 00:05:53,390
‫E assim é, é claro, parte da pilha de

137
00:05:53,390 --> 00:05:57,050
‫middleware que é executada antes que o ciclo de resposta da solicitação termine.

138
00:05:57,050 --> 00:05:58,673
‫Tudo bem, faz sentido?

139
00:06:00,630 --> 00:06:03,250
‫Portanto, vamos voltar atrás e, geralmente, definimos

140
00:06:03,250 --> 00:06:05,560
‫esse tipo de middleware global aqui,

141
00:06:05,560 --> 00:06:08,183
‫antes de todos os nossos manipuladores de rota.

142
00:06:09,500 --> 00:06:11,830
‫Tudo bem, então esta é uma função

143
00:06:11,830 --> 00:06:15,500
‫de middleware muito simples que acabamos de definir para executar alguns códigos.

144
00:06:15,500 --> 00:06:17,490
‫Mas vamos fazer outro.

145
00:06:17,490 --> 00:06:18,920
‫E, claro,

146
00:06:18,920 --> 00:06:21,800
‫podemos ter quantas funções de middleware quisermos.

147
00:06:21,800 --> 00:06:23,170
‫E desta vez, queremos

148
00:06:23,170 --> 00:06:25,053
‫realmente manipular o objeto de solicitação.

149
00:06:27,040 --> 00:06:29,090
‫Portanto, a assinatura aqui é sempre

150
00:06:29,090 --> 00:06:31,343
‫a mesma, sempre solicitação, resposta e próximo.

151
00:06:32,890 --> 00:06:35,370
‫E agora vamos realmente manipular a solicitação.

152
00:06:35,370 --> 00:06:36,800
‫Nesse caso, tudo o

153
00:06:36,800 --> 00:06:39,990
‫que queremos fazer é adicionar a hora atual à solicitação.

154
00:06:39,990 --> 00:06:42,110
‫Portanto, podemos simplesmente definir uma

155
00:06:42,110 --> 00:06:44,963
‫propriedade no objeto de solicitação chamada tempo de solicitação.

156
00:06:47,480 --> 00:06:50,300
‫Em seguida, defina-o para uma nova

157
00:06:50,300 --> 00:06:51,210
‫data,

158
00:06:51,210 --> 00:06:54,300
‫que basicamente se traduz em agora.

159
00:06:54,300 --> 00:06:57,230
‫E então podemos usar uma função de data muito útil,

160
00:06:57,230 --> 00:06:59,670
‫que é chamada de string ISO, que então

161
00:06:59,670 --> 00:07:01,520
‫a converterá em uma string legal

162
00:07:01,520 --> 00:07:03,330
‫e legível para nós.

163
00:07:03,330 --> 00:07:05,930
‫Então, vamos fingir que temos algum manipulador de

164
00:07:05,930 --> 00:07:07,860
‫rota que realmente precisa das

165
00:07:07,860 --> 00:07:10,310
‫informações sobre quando exatamente a solicitação acontece.

166
00:07:10,310 --> 00:07:12,860
‫Portanto, a solução muito simples é

167
00:07:12,860 --> 00:07:16,470
‫simplesmente adicionar algo assim a uma solicitação usando middleware.

168
00:07:16,470 --> 00:07:17,520
‫Tudo bem?

169
00:07:17,520 --> 00:07:18,960
‫Agora, não se esqueça,

170
00:07:18,960 --> 00:07:21,890
‫é claro, de chamar o próximo middleware na pilha, certo.

171
00:07:21,890 --> 00:07:26,830
‫Então, agora, temos solicitação, tempo em todas as solicitações.

172
00:07:26,830 --> 00:07:29,800
‫Portanto, agora podemos usar algum gerenciador de rota aqui,

173
00:07:29,800 --> 00:07:32,850
‫por exemplo, (resmungos) para fazer com que todos os passeios

174
00:07:32,850 --> 00:07:35,163
‫simplesmente registrem isso para nós no console.

175
00:07:36,640 --> 00:07:40,583
‫Portanto, o ponto log do console e seu tempo de solicitação real.

176
00:07:42,130 --> 00:07:46,170
‫Ok, ou podemos até mesmo enviar isso na resposta também.

177
00:07:46,170 --> 00:07:47,460
‫Deixe-me testar isso.

178
00:07:47,460 --> 00:07:49,590
‫E vamos chamar

179
00:07:52,670 --> 00:07:56,830
‫este solicitado em e req ponto request time.

180
00:07:56,830 --> 00:07:57,870
‫É esse mesmo.

181
00:07:57,870 --> 00:08:00,160
‫E então, sim, vamos prosseguir e descobrir isso.

182
00:08:00,160 --> 00:08:02,840
‫Então nosso middleware está correto, certo?

183
00:08:02,840 --> 00:08:05,870
‫Sim, então ligamos em seguida, quando terminarmos, e

184
00:08:05,870 --> 00:08:07,413
‫vamos testar isso agora.

185
00:08:08,450 --> 00:08:10,273
‫Lembre-se de que todos os tours estão disponíveis.

186
00:08:11,310 --> 00:08:14,000
‫E quando voltarmos agora, ou quando subirmos,

187
00:08:14,000 --> 00:08:16,420
‫bem, deveria realmente estar aqui.

188
00:08:16,420 --> 00:08:17,973
‫Então, o que há de errado aqui?

189
00:08:18,920 --> 00:08:20,060
‫Veja que

190
00:08:20,060 --> 00:08:22,430
‫aqui embaixo, na verdade apenas registramos

191
00:08:22,430 --> 00:08:27,230
‫uma função e sim, é claro, não chamamos as duas strings ISO.

192
00:08:27,230 --> 00:08:31,000
‫Portanto, é um método que temos que chamá-lo.

193
00:08:31,000 --> 00:08:33,930
‫Então, salve-o e tente novamente.

194
00:08:33,930 --> 00:08:37,790
‫E agora solicitamos a data de hoje.

195
00:08:37,790 --> 00:08:38,740
‫Tão perfeito.

196
00:08:38,740 --> 00:08:40,860
‫Isso veio do nosso middleware.

197
00:08:40,860 --> 00:08:44,980
‫Simplesmente porque adicionamos essa propriedade à nossa solicitação.

198
00:08:44,980 --> 00:08:46,250
‫Excelente.

199
00:08:46,250 --> 00:08:49,280
‫Espero que com isso você tenha dado um grande passo

200
00:08:49,280 --> 00:08:52,730
‫para entender realmente como o aplicativo Node funciona, como o middleware

201
00:08:52,730 --> 00:08:53,810
‫funciona, como todo

202
00:08:53,810 --> 00:08:56,370
‫o ciclo de resposta da solicitação funciona, porque

203
00:08:56,370 --> 00:08:58,300
‫isso realmente fará toda a diferença

204
00:08:58,300 --> 00:09:00,453
‫quando você estiver escrevendo seus próprios aplicativos.

