﻿1
00:00:01,140 --> 00:00:02,070
‫Instrutor:

2
00:00:02,070 --> 00:00:03,570
‫Então, nesta aula,

3
00:00:03,570 --> 00:00:06,810
‫você aprenderá uma maneira fácil de definir parâmetros

4
00:00:06,810 --> 00:00:08,940
‫direto na URL, como ler

5
00:00:08,940 --> 00:00:11,323
‫esses parâmetros e também como respondê-los.

6
00:00:12,930 --> 00:00:16,230
‫Agora, o que queremos realmente implementar nesta palestra é

7
00:00:16,230 --> 00:00:19,260
‫uma forma de obter apenas um tour.

8
00:00:19,260 --> 00:00:21,430
‫Então, agora, temos esse ponto de

9
00:00:21,430 --> 00:00:23,060
‫extremidade aqui, que nos

10
00:00:23,060 --> 00:00:25,500
‫dá todos os passeios, e queremos algo assim.

11
00:00:25,500 --> 00:00:28,710
‫Então, vamos copiá-lo em uma nova solicitação agora e, em

12
00:00:28,710 --> 00:00:31,930
‫seguida, queremos a barra e, em seguida, o ID do passeio.

13
00:00:31,930 --> 00:00:34,610
‫Então, por exemplo, digamos cinco, certo?

14
00:00:34,610 --> 00:00:36,770
‫Então, é exatamente como falamos

15
00:00:36,770 --> 00:00:39,120
‫na palestra da API REST, onde

16
00:00:39,120 --> 00:00:44,120
‫eu disse que se atingirmos esse endpoint sem qualquer ID, então, assim

17
00:00:44,420 --> 00:00:46,350
‫como está aqui, bem,

18
00:00:46,350 --> 00:00:48,490
‫então obteríamos todos os tours.

19
00:00:48,490 --> 00:00:51,550
‫Mas se especificarmos um ID depois disso, então, assim,

20
00:00:51,550 --> 00:00:53,210
‫e é claro

21
00:00:53,210 --> 00:00:55,250
‫que não precisa ser um

22
00:00:55,250 --> 00:00:57,600
‫ID, pode ser qualquer identificador único, mas,

23
00:00:57,600 --> 00:01:00,080
‫neste caso, a maneira mais fácil de

24
00:01:00,080 --> 00:01:02,230
‫implementá-lo é apenas use IDs, ok?

25
00:01:02,230 --> 00:01:05,350
‫Então, isso aqui é obviamente uma variável, porque

26
00:01:05,350 --> 00:01:09,050
‫pode ser cinco, mas também pode ser qualquer outra coisa.

27
00:01:09,050 --> 00:01:11,700
‫E então esse pedaço da URL

28
00:01:11,700 --> 00:01:15,140
‫aqui, então esse aqui, isso é uma variável, ok?

29
00:01:15,140 --> 00:01:16,390
‫E então o

30
00:01:16,390 --> 00:01:19,983
‫que precisamos fazer é definir uma rota que pode aceitar uma variável.

31
00:01:20,870 --> 00:01:23,600
‫Tudo bem, então vamos fazer isso aqui e,

32
00:01:23,600 --> 00:01:25,633
‫na verdade, logo após este.

33
00:01:26,740 --> 00:01:29,200
‫E vou copiá-lo, porque

34
00:01:29,200 --> 00:01:32,143
‫você já sabe como escrever.

35
00:01:33,920 --> 00:01:35,360
‫E então, sim.

36
00:01:35,360 --> 00:01:36,793
‫Portanto, aqui temos a

37
00:01:37,860 --> 00:01:41,410
‫rota e, agora, tudo o que precisamos fazer é adicionar essa variável.

38
00:01:41,410 --> 00:01:42,600
‫E isso é muito fácil.

39
00:01:42,600 --> 00:01:45,370
‫Então nós temos nossa barra novamente, e

40
00:01:45,370 --> 00:01:48,580
‫então a variável, nós a definimos usando dois pontos, assim.

41
00:01:48,580 --> 00:01:51,910
‫E assim, criamos uma variável chamada ID.

42
00:01:51,910 --> 00:01:54,090
‫Claro que poderia ser qualquer

43
00:01:54,090 --> 00:01:56,280
‫outra coisa, como var ou X.

44
00:01:56,280 --> 00:01:57,510
‫Realmente não importa.

45
00:01:57,510 --> 00:02:01,130
‫Mas esse aqui se chama ID, certo?

46
00:02:01,130 --> 00:02:03,653
‫Agora, não queremos enviar de volta nada parecido

47
00:02:04,490 --> 00:02:06,500
‫com isso, então vamos apenas comentar.

48
00:02:06,500 --> 00:02:08,280
‫E o que eu quero que

49
00:02:08,280 --> 00:02:10,003
‫você dê uma olhada

50
00:02:11,870 --> 00:02:14,170
‫é no console ponto log, req ponto params.

51
00:02:14,170 --> 00:02:18,390
‫Ok, então request dot params é onde todos os parâmetros de

52
00:02:18,390 --> 00:02:22,240
‫todas as variáveis que definimos aqui são armazenados, ok?

53
00:02:22,240 --> 00:02:26,190
‫Portanto, essas variáveis aqui na URL são chamadas de parâmetros

54
00:02:26,190 --> 00:02:28,960
‫e, novamente, estão em req dot

55
00:02:28,960 --> 00:02:31,400
‫params, disponíveis para usarmos agora.

56
00:02:31,400 --> 00:02:33,020
‫Então, vamos dar uma olhada agora

57
00:02:33,020 --> 00:02:34,540
‫e realmente fazer essa solicitação.

58
00:02:34,540 --> 00:02:36,410
‫E por enquanto, não vai fazer

59
00:02:36,410 --> 00:02:38,640
‫nada, então não vai nos dar o tour

60
00:02:38,640 --> 00:02:40,490
‫número cinco automaticamente, é claro.

61
00:02:40,490 --> 00:02:41,820
‫Mas o que eu quero

62
00:02:41,820 --> 00:02:44,170
‫fazer agora é apenas dar uma olhada nos req dot params.

63
00:02:44,170 --> 00:02:47,690
‫E, de fato, aqui temos, ID é cinco.

64
00:02:47,690 --> 00:02:50,480
‫Portanto, request dot params é um objeto

65
00:02:50,480 --> 00:02:53,160
‫muito bom que atribui automaticamente

66
00:02:53,160 --> 00:02:57,600
‫o valor à nossa variável, portanto, nosso parâmetro que definimos.

67
00:02:57,600 --> 00:02:59,720
‫E poderíamos realmente definir múltiplos.

68
00:02:59,720 --> 00:03:01,703
‫Portanto, poderíamos dizer ID

69
00:03:01,703 --> 00:03:04,883
‫e, em seguida, poderíamos dizer X e poderíamos dizer

70
00:03:06,360 --> 00:03:10,110
‫Y, e então, é claro, teríamos que definir todos eles.

71
00:03:10,110 --> 00:03:11,750
‫Então, 23

72
00:03:11,750 --> 00:03:14,200
‫e 45, digamos.

73
00:03:14,200 --> 00:03:15,810
‫Envie esse cara.

74
00:03:15,810 --> 00:03:17,380
‫E então, de fato,

75
00:03:17,380 --> 00:03:20,290
‫temos um objeto com todas essas três variáveis neles.

76
00:03:20,290 --> 00:03:23,680
‫Ok, agora se os definirmos assim na

77
00:03:23,680 --> 00:03:26,003
‫URL, temos que especificar.

78
00:03:26,890 --> 00:03:29,060
‫Então, se não tivéssemos o

79
00:03:29,060 --> 00:03:31,180
‫parâmetro Y, teríamos um

80
00:03:31,180 --> 00:03:35,350
‫erro, porque agora não estamos atingindo essa rota exata, certo?

81
00:03:35,350 --> 00:03:38,900
‫Então nossa rota agora não é mais exatamente essa,

82
00:03:38,900 --> 00:03:40,730
‫mas é só isso.

83
00:03:40,730 --> 00:03:43,500
‫E então, tem um erro, ok?

84
00:03:43,500 --> 00:03:44,650
‫Faz sentido?

85
00:03:44,650 --> 00:03:46,950
‫Agora, na verdade, há uma coisa

86
00:03:46,950 --> 00:03:48,980
‫que podemos fazer: parâmetros opcionais.

87
00:03:48,980 --> 00:03:51,790
‫Então se você quiser tornar este parâmetro opcional, nós

88
00:03:51,790 --> 00:03:53,880
‫apenas adicionamos um ponto de interrogação

89
00:03:53,880 --> 00:03:57,283
‫a ele, e agora, é opcional, então não precisamos mais especificá-lo.

90
00:03:58,410 --> 00:03:59,860
‫Então, assim.

91
00:03:59,860 --> 00:04:02,970
‫E agora temos apenas cinco, 23 e então Y

92
00:04:02,970 --> 00:04:05,660
‫ainda está aqui, mas é indefinido, porque

93
00:04:05,660 --> 00:04:06,960
‫agora é opcional.

94
00:04:07,940 --> 00:04:08,773
‫Tudo bem.

95
00:04:08,773 --> 00:04:11,610
‫Mas vamos nos livrar de

96
00:04:11,610 --> 00:04:15,430
‫tudo isso, porque só precisamos realmente da identidade, ok?

97
00:04:15,430 --> 00:04:16,830
‫E agora tudo

98
00:04:16,830 --> 00:04:19,920
‫o que precisamos fazer é realmente obter o passeio

99
00:04:19,920 --> 00:04:23,720
‫com esse ID de nossos dados. json, do nosso arquivo JSON, certo?

100
00:04:23,720 --> 00:04:25,580
‫Então, basicamente, da variedade de passeios.

101
00:04:25,580 --> 00:04:28,100
‫E isso não deve ser tão difícil.

102
00:04:28,100 --> 00:04:29,493
‫Digamos que

103
00:04:33,110 --> 00:04:35,400
‫const tour é igual

104
00:04:35,400 --> 00:04:37,140
‫a tours ponto

105
00:04:38,320 --> 00:04:39,500
‫find.

106
00:04:39,500 --> 00:04:41,610
‫E não tenho certeza se você está familiarizado

107
00:04:41,610 --> 00:04:43,350
‫com esse método de localização aqui.

108
00:04:43,350 --> 00:04:46,400
‫Então, mais uma vez, isso não tem nada a ver com

109
00:04:46,400 --> 00:04:48,750
‫Node ou Express, é apenas uma função JavaScript regular

110
00:04:48,750 --> 00:04:50,610
‫que você pode usar em matrizes.

111
00:04:50,610 --> 00:04:52,270
‫E a maneira como funciona é esta.

112
00:04:52,270 --> 00:04:55,160
‫Então, aqui, passamos uma função de retorno de

113
00:04:55,160 --> 00:04:57,993
‫chamada e, na verdade, deixe-me começar escrevendo-a.

114
00:04:59,590 --> 00:05:01,310
‫Portanto, o ID do

115
00:05:01,310 --> 00:05:03,260
‫elemento é igual aos parâmetros

116
00:05:04,410 --> 00:05:06,130
‫dos pontos req, certo?

117
00:05:06,130 --> 00:05:08,660
‫Então, basicamente, ele fará um loop pelo

118
00:05:08,660 --> 00:05:10,320
‫array e, em

119
00:05:10,320 --> 00:05:12,950
‫cada uma das iterações, teremos acesso ao

120
00:05:12,950 --> 00:05:15,060
‫elemento atual e retornaremos verdadeiro ou

121
00:05:15,060 --> 00:05:17,700
‫falso em cada uma das iterações, certo?

122
00:05:17,700 --> 00:05:20,050
‫Agora, o que o método find fará

123
00:05:20,050 --> 00:05:21,890
‫é basicamente criar um array

124
00:05:21,890 --> 00:05:23,520
‫que contém apenas

125
00:05:23,520 --> 00:05:27,620
‫o elemento em que essa comparação aqui acaba sendo verdadeira, certo?

126
00:05:27,620 --> 00:05:29,840
‫E nesta situação, queremos encontrar o elemento

127
00:05:29,840 --> 00:05:32,020
‫onde o ID é igual ao

128
00:05:32,020 --> 00:05:33,860
‫que obtemos dos parâmetros.

129
00:05:33,860 --> 00:05:36,830
‫E assim, especificando esta função de retorno de

130
00:05:36,830 --> 00:05:39,520
‫chamada aqui com esta comparação, iremos

131
00:05:39,520 --> 00:05:42,630
‫garantir que apenas o elemento onde o ID

132
00:05:42,630 --> 00:05:45,160
‫é realmente igual ao ID especificado

133
00:05:45,160 --> 00:05:47,600
‫nos parâmetros será retornado do

134
00:05:47,600 --> 00:05:50,520
‫método find e armazenado no tour, certo?

135
00:05:50,520 --> 00:05:54,070
‫Agora, na verdade, isso não vai funcionar assim, porque como você

136
00:05:54,070 --> 00:05:55,620
‫pode ver aqui, esses

137
00:05:55,620 --> 00:05:58,460
‫valores aqui, eles são na verdade strings, ok?

138
00:05:58,460 --> 00:06:01,090
‫Portanto, precisamos convertê-lo em um número, mas

139
00:06:01,090 --> 00:06:02,290
‫é muito fácil.

140
00:06:02,290 --> 00:06:04,310
‫Tudo o que temos

141
00:06:04,310 --> 00:06:08,380
‫a fazer é dizer que o ID é igual a

142
00:06:09,330 --> 00:06:12,200
‫req ponto params ponto ID vezes um.

143
00:06:12,200 --> 00:06:14,210
‫Portanto, este é um bom

144
00:06:14,210 --> 00:06:17,690
‫truque em que o JavaScript, quando multiplicamos uma string que se

145
00:06:17,690 --> 00:06:19,870
‫parece com um número, quando multiplicamos por

146
00:06:19,870 --> 00:06:22,983
‫outro número, ele converte automaticamente essa string em um número.

147
00:06:23,860 --> 00:06:27,903
‫Esse é um truque muito pequeno e agradável que podemos usar aqui.

148
00:06:29,910 --> 00:06:34,910
‫E assim, agora, já temos nosso tour pronto para enviar.

149
00:06:36,410 --> 00:06:39,320
‫E então os dados que

150
00:06:39,320 --> 00:06:41,410
‫queremos enviar são passeios

151
00:06:41,410 --> 00:06:43,463
‫iguais aos passeios.

152
00:06:44,450 --> 00:06:45,770
‫Ou, na verdade, é

153
00:06:45,770 --> 00:06:48,440
‫apenas uma turnê, então turnê deve ser igual a turnê, certo?

154
00:06:48,440 --> 00:06:49,570
‫Faz sentido?

155
00:06:49,570 --> 00:06:53,050
‫Então, talvez a parte mais complicada aqui seja

156
00:06:53,050 --> 00:06:56,900
‫apenas essa, mas, sim, é novamente apenas um JavaScript normal.

157
00:06:56,900 --> 00:06:59,520
‫E então eu acredito, ou pelo menos espero,

158
00:06:59,520 --> 00:07:01,710
‫que você já esteja familiarizado

159
00:07:01,710 --> 00:07:04,943
‫com o uso desse tipo de método de array, certo?

160
00:07:06,250 --> 00:07:09,720
‫Então, queremos apenas a turnê número cinco.

161
00:07:09,720 --> 00:07:12,590
‫E então vamos dar uma olhada se realmente funciona.

162
00:07:12,590 --> 00:07:15,860
‫E bem, não funcionou, então vamos dar uma olhada nisso.

163
00:07:15,860 --> 00:07:20,250
‫Sim, claro, aqui precisamos usar o ID, é claro.

164
00:07:20,250 --> 00:07:22,130
‫Portanto, não req. params.

165
00:07:22,130 --> 00:07:23,440
‫IDENTIFICAÇÃO.

166
00:07:23,440 --> 00:07:26,570
‫Ok, então, tente novamente.

167
00:07:26,570 --> 00:07:30,970
‫E agora, de fato, temos a turnê com ID de cinco, ok,

168
00:07:30,970 --> 00:07:33,193
‫e apenas aquela turnê única.

169
00:07:35,230 --> 00:07:37,390
‫Vamos tentar o número dois, por

170
00:07:37,390 --> 00:07:39,800
‫exemplo, e de fato, o ID dois.

171
00:07:39,800 --> 00:07:41,800
‫Mas agora, vamos tentar outra situação.

172
00:07:41,800 --> 00:07:44,723
‫Vamos fazer, ID 23, e agora, não

173
00:07:45,730 --> 00:07:48,490
‫recebemos nada de volta, certo?

174
00:07:48,490 --> 00:07:53,050
‫E isso porque não há um tour com o ID 23, mas

175
00:07:53,050 --> 00:07:56,300
‫ainda retornamos o código de status 200 OK,

176
00:07:56,300 --> 00:07:59,330
‫e isso não faz muito sentido, ok?

177
00:07:59,330 --> 00:08:01,903
‫E então vamos mudar isso.

178
00:08:02,830 --> 00:08:04,580
‫E o que devemos fazer aqui?

179
00:08:04,580 --> 00:08:07,180
‫Bem, como uma solução muito simplista, o

180
00:08:07,180 --> 00:08:09,990
‫que podemos fazer é verificar se o ID

181
00:08:09,990 --> 00:08:13,420
‫é maior do que o comprimento da matriz de passeios

182
00:08:13,420 --> 00:08:15,030
‫e se for mais

183
00:08:15,030 --> 00:08:17,670
‫longo, bem, podemos enviar de volta um erro

184
00:08:17,670 --> 00:08:21,753
‫404 dizendo que não conseguimos encontrar qualquer tour para o ID fornecido.

185
00:08:23,030 --> 00:08:26,250
‫Então, vamos fazer essa solução muito simples, porque, bem, esta não

186
00:08:26,250 --> 00:08:28,755
‫é a API real que estamos construindo neste

187
00:08:28,755 --> 00:08:30,140
‫ponto e, neste

188
00:08:30,140 --> 00:08:31,670
‫caso, não é um problema

189
00:08:31,670 --> 00:08:34,690
‫usar uma solução excessivamente simplista como essa, porque esta não

190
00:08:34,690 --> 00:08:37,400
‫é a coisa real que estamos construindo aqui.

191
00:08:37,400 --> 00:08:39,490
‫Na verdade, estamos apenas tentando

192
00:08:39,490 --> 00:08:41,690
‫nos familiarizar com o funcionamento do Express.

193
00:08:41,690 --> 00:08:44,690
‫E a mesma coisa pode realmente ser dita aqui,

194
00:08:44,690 --> 00:08:46,520
‫por exemplo, quando nós ...

195
00:08:46,520 --> 00:08:49,140
‫Então aqui embaixo, onde postamos um novo tour, no

196
00:08:49,140 --> 00:08:52,260
‫mundo real, teríamos sempre, sempre que verificar se a entrada do

197
00:08:52,260 --> 00:08:54,210
‫usuário é válida, se ela

198
00:08:54,210 --> 00:08:56,680
‫não contém nenhum código malicioso, ou realmente, qualquer

199
00:08:56,680 --> 00:08:59,350
‫coisa que não tenhamos não quero em nosso envoltório.

200
00:08:59,350 --> 00:09:01,890
‫E de novo, faremos isso, é claro, mais

201
00:09:01,890 --> 00:09:03,680
‫tarde, mas neste pequeno

202
00:09:03,680 --> 00:09:07,070
‫exemplo aqui, eu realmente quero me concentrar nos fundamentos, ok?

203
00:09:07,070 --> 00:09:10,100
‫Então, vamos implementar rapidamente o que acabamos

204
00:09:10,100 --> 00:09:15,100
‫de dizer, que se o ID for maior do que o comprimento do ponto dos

205
00:09:16,570 --> 00:09:20,730
‫passeios, por exemplo, digamos que temos 12 passeios em nossa matriz, bem,

206
00:09:20,730 --> 00:09:24,710
‫se o ID for 13, ou 15, ou seja o que

207
00:09:24,710 --> 00:09:27,750
‫for, bem, nesse caso, o ID não é válido.

208
00:09:27,750 --> 00:09:31,000
‫Então, dizemos return, e isso é porque queremos

209
00:09:31,000 --> 00:09:34,180
‫sair da função neste ponto, ok?

210
00:09:34,180 --> 00:09:35,823
‫E é por isso que dizemos voltar.

211
00:09:37,370 --> 00:09:40,040
‫Em seguida, enviamos um status 404, porque

212
00:09:40,040 --> 00:09:42,893
‫não conseguimos encontrar nenhum tour para esse ID,

213
00:09:44,106 --> 00:09:46,370
‫e uma resposta JSON simples com

214
00:09:49,400 --> 00:09:51,563
‫um status de falha.

215
00:09:52,740 --> 00:09:56,173
‫Portanto, falha é o que enviamos sempre que temos um código 400.

216
00:09:58,180 --> 00:10:00,053
‫E então apenas uma propriedade de

217
00:10:03,580 --> 00:10:04,663
‫mensagem, ID inválido.

218
00:10:06,640 --> 00:10:07,820
‫Tudo bem.

219
00:10:07,820 --> 00:10:09,503
‫E então vamos testar isso agora.

220
00:10:10,740 --> 00:10:12,103
‫Portanto, temos nosso 23.

221
00:10:13,340 --> 00:10:16,900
‫E, de fato, 404 não encontrado, ID inválido.

222
00:10:16,900 --> 00:10:19,810
‫Então foi exatamente isso que acabamos de fazer

223
00:10:19,810 --> 00:10:22,093
‫e parece que está funcionando, certo?

224
00:10:24,230 --> 00:10:25,860
‫Outra solução que

225
00:10:25,860 --> 00:10:27,490
‫poderíamos implementar aqui

226
00:10:27,490 --> 00:10:29,480
‫também seria apenas fazer esse

227
00:10:29,480 --> 00:10:32,163
‫teste depois de fazer o tour aqui.

228
00:10:34,440 --> 00:10:36,100
‫Assim, obteríamos o ID, então

229
00:10:36,100 --> 00:10:38,230
‫tentaríamos encontrar um tour, e se

230
00:10:38,230 --> 00:10:39,810
‫não houvesse nenhum tour,

231
00:10:39,810 --> 00:10:42,670
‫bem, então diríamos que o ID é inválido.

232
00:10:42,670 --> 00:10:45,600
‫Então, vamos comentar este, duplicado, apenas

233
00:10:45,600 --> 00:10:48,950
‫para que possamos realmente manter as duas soluções aqui.

234
00:10:48,950 --> 00:10:52,000
‫E então podemos dizer, se não houver turnê, ok?

235
00:10:52,000 --> 00:10:53,970
‫Então, basicamente, o resultado

236
00:10:53,970 --> 00:10:56,190
‫aqui, se nenhum tour for

237
00:10:56,190 --> 00:10:59,130
‫encontrado, bem, essa variável é basicamente indefinida,

238
00:10:59,130 --> 00:11:01,840
‫e podemos testar isso aqui, assim.

239
00:11:01,840 --> 00:11:05,790
‫Portanto, se não houver um tour, se o tour for basicamente

240
00:11:05,790 --> 00:11:09,183
‫indefinido, enviaremos de volta essa mensagem de erro.

241
00:11:10,330 --> 00:11:12,010
‫Então, vamos testar isso também.

242
00:11:12,010 --> 00:11:14,820
‫E, de fato, nos dá o mesmo resultado.

243
00:11:14,820 --> 00:11:16,590
‫Ok, e assim,

244
00:11:16,590 --> 00:11:18,750
‫você aprendeu a especificar

245
00:11:18,750 --> 00:11:21,680
‫parâmetros em uma URL, assim, ok?

246
00:11:21,680 --> 00:11:24,470
‫Então você aprendeu como ler esses

247
00:11:24,470 --> 00:11:27,650
‫parâmetros da URL, usando req dot params.

248
00:11:27,650 --> 00:11:31,650
‫Bem, e então usamos aquele ID, aquele parâmetro, a fim

249
00:11:31,650 --> 00:11:35,140
‫de encontrar um passeio com aquele ID exato.

250
00:11:35,140 --> 00:11:38,210
‫Então foi isso que fizemos aqui, nesta linha, certo?

251
00:11:38,210 --> 00:11:40,520
‫Esse era o objetivo deste vídeo,

252
00:11:40,520 --> 00:11:42,843
‫então vamos agora passar para o próximo.

