﻿1
00:00:01,330 --> 00:00:02,860
‫Instrutor: Outro pequeno recurso

2
00:00:02,860 --> 00:00:04,910
‫bom que podemos adicionar a uma

3
00:00:04,910 --> 00:00:08,070
‫API é fornecer uma rota de alias para uma solicitação que

4
00:00:08,070 --> 00:00:09,660
‫pode ser muito popular, de

5
00:00:09,660 --> 00:00:11,963
‫modo que pode ser solicitada o tempo todo.

6
00:00:13,400 --> 00:00:15,260
‫E, por exemplo,

7
00:00:15,260 --> 00:00:17,790
‫podemos fornecer uma rota especificamente para

8
00:00:17,790 --> 00:00:20,203
‫os cinco melhores passeios baratos.

9
00:00:21,324 --> 00:00:23,530
‫Portanto, se usarmos nossa rota normal

10
00:00:23,530 --> 00:00:25,530
‫aqui com os filtros e todos

11
00:00:25,530 --> 00:00:26,580
‫os recursos

12
00:00:26,580 --> 00:00:29,930
‫que já temos, a solicitação seria um pouco assim.

13
00:00:29,930 --> 00:00:32,090
‫Então, vamos nos livrar de tudo isso.

14
00:00:32,090 --> 00:00:34,510
‫Então, os cinco melhores e mais baratos tours.

15
00:00:34,510 --> 00:00:37,340
‫Então, isso significa que temos um limite de

16
00:00:39,495 --> 00:00:42,663
‫cinco e, em seguida, vamos classificar por classificações e por preço.

17
00:00:44,300 --> 00:00:47,640
‫Então, classifique e, em seguida, a

18
00:00:47,640 --> 00:00:52,640
‫classificação média e, em ordem decrescente, menos a média das classificações.

19
00:00:54,110 --> 00:00:56,750
‫E, caso tenham a mesma média, então

20
00:00:56,750 --> 00:00:59,270
‫queremos o preço mais barato possível.

21
00:00:59,270 --> 00:01:02,353
‫E então, vamos classificar também por preço.

22
00:01:03,610 --> 00:01:06,060
‫Vamos rapidamente dar uma olhada nos resultados.

23
00:01:06,060 --> 00:01:08,163
‫E, de fato, temos cinco tours aqui.

24
00:01:09,670 --> 00:01:12,560
‫E Postman faz essa rolagem novamente.

25
00:01:12,560 --> 00:01:18,640
‫Portanto, temos tours com 4. 9, 4.

26
00:01:18,640 --> 00:01:18,640
‫9, 4.

27
00:01:18,640 --> 00:01:20,553
‫9 novamente, 4. 8 e 4. 7

28
00:01:22,250 --> 00:01:27,060
‫E então, esses são, na verdade, nossos cinco melhores e mais baratos tours.

29
00:01:27,060 --> 00:01:29,150
‫Se dissermos mais barato e

30
00:01:29,150 --> 00:01:32,270
‫melhor, bem, talvez tenhamos que classificar por preço primeiro,

31
00:01:32,270 --> 00:01:34,580
‫porque alguns deles não são realmente baratos.

32
00:01:34,580 --> 00:01:36,320
‫Por exemplo, este aqui.

33
00:01:36,320 --> 00:01:40,180
‫Mas, selecionamos, primeiro, a média.

34
00:01:40,180 --> 00:01:43,160
‫E assim, classificamos primeiro pela maior média e,

35
00:01:43,160 --> 00:01:46,700
‫só depois em caso de empate, basicamente, só então,

36
00:01:46,700 --> 00:01:47,900
‫pelo preço.

37
00:01:49,120 --> 00:01:51,340
‫Agora, digamos que se trata de uma solicitação

38
00:01:51,340 --> 00:01:53,350
‫que se faz o tempo todo

39
00:01:53,350 --> 00:01:55,060
‫e que queremos oferecer um

40
00:01:55,060 --> 00:01:57,453
‫roteiro simples e fácil de memorizar para o usuário.

41
00:01:58,670 --> 00:02:02,110
‫Então, vamos para nosso aplicativo e tentar implementar isso.

42
00:02:02,110 --> 00:02:06,330
‫E, vamos começar com suas rotas, então faça um tour roteador.

43
00:02:06,330 --> 00:02:08,703
‫E, então, precisamos criar uma nova rota.

44
00:02:09,550 --> 00:02:12,390
‫E, vamos fazer isso aqui, bem no topo.

45
00:02:12,390 --> 00:02:16,913
‫Então, roteador. rota.

46
00:02:18,650 --> 00:02:21,370
‫E então, como vamos chamar essa rota?

47
00:02:21,370 --> 00:02:25,293
‫Bem, digamos que os 5 mais baratos.

48
00:02:26,590 --> 00:02:30,010
‫Então, um nome bem simples, mas vai funcionar.

49
00:02:30,010 --> 00:02:31,810
‫E então, na verdade,

50
00:02:31,810 --> 00:02:34,103
‫queremos apenas receber solicitações para esta rota.

51
00:02:35,170 --> 00:02:37,480
‫E então, agora é hora de pensar.

52
00:02:37,480 --> 00:02:41,370
‫Como vamos implementar essa funcionalidade?

53
00:02:41,370 --> 00:02:43,530
‫Bem, em essência, o que

54
00:02:43,530 --> 00:02:47,273
‫queremos é ainda ter todos os passeios como aqui.

55
00:02:48,210 --> 00:02:51,070
‫E então, deixe-me ir em frente e começar

56
00:02:51,070 --> 00:02:52,930
‫copiando e colando isso aqui.

57
00:02:52,930 --> 00:02:56,320
‫Portanto, ainda queremos usar essa função aqui porque realmente

58
00:02:56,320 --> 00:02:57,740
‫não faz sentido

59
00:02:57,740 --> 00:03:00,900
‫reescrever toda a lógica que está lá.

60
00:03:00,900 --> 00:03:04,010
‫Mas, antes de podermos chamar esse ender de rota,

61
00:03:04,010 --> 00:03:06,690
‫basicamente queremos preencher alguns dos campos na string

62
00:03:06,690 --> 00:03:07,833
‫de consulta.

63
00:03:08,970 --> 00:03:10,340
‫Portanto, já sabemos

64
00:03:10,340 --> 00:03:13,590
‫que nossa string de consulta deve ser semelhante a esta.

65
00:03:13,590 --> 00:03:16,370
‫E, na verdade, podemos adicionar mais algumas coisas aqui.

66
00:03:16,370 --> 00:03:18,070
‫Mas, em essência, nossa string

67
00:03:18,070 --> 00:03:19,970
‫de consulta deve ser parecida com isso.

68
00:03:19,970 --> 00:03:23,100
‫E então, a solução será executar um middleware

69
00:03:23,100 --> 00:03:26,163
‫antes de realmente executar este manipulador getAllTours.

70
00:03:27,080 --> 00:03:28,760
‫E então, essa função de

71
00:03:28,760 --> 00:03:31,843
‫middleware irá manipular o objeto de consulta que está chegando.

72
00:03:33,010 --> 00:03:35,210
‫E então, este é outro

73
00:03:35,210 --> 00:03:38,150
‫exemplo muito bom de uso de middleware

74
00:03:38,150 --> 00:03:41,100
‫porque você realmente precisa se familiarizar e se

75
00:03:41,100 --> 00:03:44,150
‫acostumar com esse conceito de usar middleware estrategicamente

76
00:03:44,150 --> 00:03:47,123
‫para alterar o objeto de solicitação conforme necessário.

77
00:03:48,690 --> 00:03:52,100
‫Então, vamos adicioná-lo aqui.

78
00:03:52,100 --> 00:03:53,920
‫Então, tourController.

79
00:03:53,920 --> 00:03:55,150
‫E então, a

80
00:03:55,150 --> 00:03:57,630
‫função de middleware que criaremos em um

81
00:03:57,630 --> 00:03:59,733
‫segundo, que será chamada de aliasTopTours.

82
00:04:05,060 --> 00:04:08,820
‫Então, vamos copiar esse nome, mover para o tourController

83
00:04:08,820 --> 00:04:11,843
‫e vou colocá-lo aqui no topo.

84
00:04:14,100 --> 00:04:15,217
‫Então, exportações. em seguida, solicitação,

85
00:04:17,370 --> 00:04:19,823
‫resposta e qual é o terceiro argumento

86
00:04:21,650 --> 00:04:22,600
‫de que

87
00:04:22,600 --> 00:04:24,030
‫precisamos no middleware, lembra?

88
00:04:24,030 --> 00:04:27,180
‫E, eu sei que a seção Express já está

89
00:04:27,180 --> 00:04:30,700
‫meio longe neste ponto, mas espero que você lembre que o

90
00:04:30,700 --> 00:04:33,280
‫terceiro argumento aqui precisa ser o próximo.

91
00:04:33,280 --> 00:04:36,230
‫Portanto, para chamar o próximo middleware que

92
00:04:36,230 --> 00:04:38,970
‫está na pilha de middleware.

93
00:04:38,970 --> 00:04:40,520
‫Dê uma chance.

94
00:04:45,600 --> 00:04:46,640
‫E então, esse erro deve desaparecer.

95
00:04:46,640 --> 00:04:49,203
‫E então, vamos fazer o que dissemos que faríamos.

96
00:04:53,554 --> 00:04:55,950
‫Então, basicamente para manipular o

97
00:04:55,950 --> 00:04:58,870
‫objeto de consulta de forma que quando ele

98
00:04:58,870 --> 00:05:01,960
‫atingir o manipulador getAllTours, ele já esteja diferente.

99
00:05:01,960 --> 00:05:03,423
‫Então, vamos primeiro fazer

100
00:05:04,270 --> 00:05:07,160
‫isso e depois realmente dar uma olhada no que acontece.

101
00:05:07,160 --> 00:05:08,783
‫Portanto, lembre-se, o limite será definido em cinco.

102
00:05:10,010 --> 00:05:13,280
‫E, lembre-se de que tudo são cordas aqui e então estou

103
00:05:13,280 --> 00:05:15,320
‫definindo isso também para uma corda.

104
00:05:15,320 --> 00:05:17,370
‫Agora, o que mais nós tínhamos?

105
00:05:19,350 --> 00:05:20,703
‫Então, nós temos

106
00:05:21,580 --> 00:05:25,200
‫esse tipo, então vamos apenas copiar aqui e dizer req. inquerir. organizar.

107
00:05:26,400 --> 00:05:30,623
‫Deve ser isso.

108
00:05:32,247 --> 00:05:35,050
‫E então, também podemos especificar

109
00:05:35,050 --> 00:05:39,230
‫alguns campos para que o usuário não obtenha

110
00:05:39,230 --> 00:05:42,560
‫todos os campos que temos neles.

111
00:05:42,560 --> 00:05:43,660
‫Então, digamos

112
00:05:46,420 --> 00:05:49,033
‫que queremos apenas o nome, o preço, a

113
00:05:50,070 --> 00:05:52,973
‫média das avaliações, o resumo e a dificuldade.

114
00:05:54,570 --> 00:05:55,653
‫Salve e agora

115
00:05:58,650 --> 00:06:02,600
‫tudo o que precisamos é o próximo, caso contrário, este middleware ficará preso

116
00:06:02,600 --> 00:06:05,730
‫aqui para sempre e não poderá seguir em frente.

117
00:06:05,730 --> 00:06:07,043
‫Então, vamos descobrir um

118
00:06:08,440 --> 00:06:10,420
‫pouco melhor o que realmente vai acontecer aqui.

119
00:06:10,420 --> 00:06:12,690
‫Portanto, assim que

120
00:06:12,690 --> 00:06:16,900
‫alguém atingir a rota mais barata, começaremos.

121
00:06:16,900 --> 00:06:17,733
‫O primeiro middleware que será executado é aliasTopTours.

122
00:06:17,733 --> 00:06:21,470
‫Então, a função que acabamos de criar.

123
00:06:21,470 --> 00:06:23,433
‫Então, o que isso fará é

124
00:06:25,420 --> 00:06:27,060
‫definir essas propriedades do

125
00:06:27,060 --> 00:06:30,070
‫objeto de consulta para esses valores que especificamos aqui.

126
00:06:30,070 --> 00:06:32,490
‫Basicamente, preenchemos previamente partes do

127
00:06:32,490 --> 00:06:35,800
‫objeto de consulta antes de chegarmos ao manipulador getAllTours.

128
00:06:35,800 --> 00:06:39,453
‫E assim, assim que chegarmos a essa função, o objeto

129
00:06:40,720 --> 00:06:43,670
‫de consulta já estará pré-preenchido, mesmo que o

130
00:06:43,670 --> 00:06:46,080
‫usuário não tenha colocado nenhum desses parâmetros

131
00:06:46,080 --> 00:06:47,960
‫na string de consulta.

132
00:06:47,960 --> 00:06:49,963
‫E então, em essência, o que estamos

133
00:06:51,230 --> 00:06:52,170
‫fazendo aqui

134
00:06:52,170 --> 00:06:55,137
‫é pré-preencher a string de consulta para o usuário, de forma

135
00:06:55,137 --> 00:06:57,650
‫que o usuário não tenha que fazer isso sozinho.

136
00:06:57,650 --> 00:06:59,083
‫E então, vamos realmente prosseguir e tentar isso.

137
00:07:01,024 --> 00:07:03,683
‫Então, estou copiando isso.

138
00:07:04,780 --> 00:07:06,003
‫E aqui não são passeios.

139
00:07:09,380 --> 00:07:11,090
‫É um dos 5 melhores passeios.

140
00:07:11,090 --> 00:07:14,463
‫Uau, o que está acontecendo aqui?

141
00:07:16,710 --> 00:07:18,620
‫Por algum motivo, ele

142
00:07:18,620 --> 00:07:21,960
‫não encontra essa rota, então vamos voltar.

143
00:07:21,960 --> 00:07:23,360
‫Então, 5 principais tours.

144
00:07:23,360 --> 00:07:25,013
‫E então, aqui na rota, ah, tudo bem.

145
00:07:26,140 --> 00:07:28,720
‫É chamado de top 5 barato,

146
00:07:28,720 --> 00:07:30,690
‫então meu erro aqui.

147
00:07:30,690 --> 00:07:32,093
‫Então, barato, envie

148
00:07:33,440 --> 00:07:35,780
‫agora, e ainda não está correto.

149
00:07:35,780 --> 00:07:38,123
‫Ah sim.

150
00:07:40,030 --> 00:07:41,110
‫Claro, ainda tenho que colocar os tours aqui, claro.

151
00:07:41,110 --> 00:07:46,110
‫Então, estamos no recurso de tours e todo o roteador

152
00:07:46,140 --> 00:07:48,300
‫está montado nessa rota de

153
00:07:48,300 --> 00:07:50,210
‫tours, lembre-se disso.

154
00:07:50,210 --> 00:07:53,670
‫E então, é nesses passeios, naquele tipo de

155
00:07:53,670 --> 00:07:55,430
‫mini-aplicativo, lembre-se disso,

156
00:07:55,430 --> 00:07:58,140
‫onde criei essa rota top 5-barata.

157
00:07:58,140 --> 00:08:00,723
‫Então, vamos esperar que funcione agora.

158
00:08:01,790 --> 00:08:03,470
‫E, de fato, é verdade.

159
00:08:03,470 --> 00:08:04,703
‫Então, funcionou, é fantástico.

160
00:08:07,350 --> 00:08:11,030
‫Agora, é claro, poderíamos fazer muito mais

161
00:08:11,030 --> 00:08:15,090
‫rotas alternativas aqui, mas isso não é realmente necessário.

162
00:08:15,090 --> 00:08:16,740
‫Eu realmente queria apenas

163
00:08:16,740 --> 00:08:19,400
‫mostrar a vocês o conceito, mostrar que pode ser

164
00:08:19,400 --> 00:08:21,630
‫um bom recurso para adicionar a qualquer

165
00:08:21,630 --> 00:08:25,380
‫API e também queria, novamente, mostrar a vocês o poder dos middlewares.

166
00:08:25,380 --> 00:08:27,933
‫Então, estamos falando sobre Mongoose aqui, mas ainda

167
00:08:29,160 --> 00:08:30,950
‫assim, é muito importante continuar

168
00:08:30,950 --> 00:08:34,360
‫se familiarizando com os conceitos do Express de que falamos antes.

169
00:08:34,360 --> 00:08:37,513
‫De qualquer forma, agora terminamos com nossos recursos de API.

170
00:08:39,040 --> 00:08:42,120
‫No próximo vídeo, vamos apenas refatorar tudo

171
00:08:42,120 --> 00:08:44,950
‫isso rapidamente para tornar o

172
00:08:44,950 --> 00:08:48,690
‫código inteiro um pouco mais modular e, claro, melhor.

