﻿1
00:00:01,437 --> 00:00:03,800
‫-: (Homem) Então, nesta aula, você aprenderá

2
00:00:03,800 --> 00:00:07,093
‫como encadear várias funções de middleware para a mesma rota.

3
00:00:08,490 --> 00:00:11,500
‫Portanto, até este ponto, sempre que

4
00:00:11,500 --> 00:00:15,610
‫queríamos definir um middleware, apenas passávamos uma função de middleware.

5
00:00:15,610 --> 00:00:19,510
‫Então, por exemplo aqui, para lidar com esta solicitação de postagem,

6
00:00:19,510 --> 00:00:22,700
‫bem, nós apenas passamos esta função de middleware

7
00:00:22,700 --> 00:00:24,930
‫que é nosso manipulador createTour.

8
00:00:24,930 --> 00:00:27,400
‫OK? E essa é a

9
00:00:27,400 --> 00:00:30,880
‫única função que será chamada sempre que recebermos uma solicitação de postagem.

10
00:00:30,880 --> 00:00:33,840
‫Direito? Mas vamos dizer agora

11
00:00:33,840 --> 00:00:35,940
‫que queremos realmente executar várias funções de middleware.

12
00:00:35,940 --> 00:00:39,280
‫Agora você pode perguntar "Por que faríamos isso? "

13
00:00:39,280 --> 00:00:42,713
‫Bem, podemos, por exemplo, executar um middleware antes de

14
00:00:42,713 --> 00:00:45,760
‫createTour aqui para realmente verificar os dados que

15
00:00:45,760 --> 00:00:47,060
‫chegam no corpo.

16
00:00:47,060 --> 00:00:50,490
‫Direito? É um pouco parecido com o que tínhamos antes.

17
00:00:50,490 --> 00:00:53,670
‫Portanto, fizemos esta verificação de middleware de ID antes

18
00:00:53,670 --> 00:00:57,240
‫para verificar se o ID é realmente válido e fora

19
00:00:57,240 --> 00:00:59,430
‫dos manipuladores de rota reais,

20
00:00:59,430 --> 00:01:03,140
‫para que eles se preocupem apenas em obter, atualizar ou excluir

21
00:01:03,140 --> 00:01:04,080
‫um tour.

22
00:01:04,080 --> 00:01:07,340
‫Direito? E aqui, neste exemplo específico com

23
00:01:07,340 --> 00:01:09,130
‫postagem, podemos querer fazer a mesma coisa.

24
00:01:09,130 --> 00:01:12,900
‫Então, como eu disse, podemos querer verificar se o pedido. buddy realmente contém

25
00:01:12,900 --> 00:01:16,080
‫os dados que desejamos para o passeio.

26
00:01:16,080 --> 00:01:18,440
‫OK? E então vamos fazer isso.

27
00:01:18,440 --> 00:01:22,020
‫E, na verdade, quero que você primeiro faça por conta própria.

28
00:01:22,020 --> 00:01:25,240
‫Portanto, esse é um tipo de desafio que desejo que você

29
00:01:25,240 --> 00:01:27,670
‫conclua para usar os conceitos sobre os quais

30
00:01:27,670 --> 00:01:30,450
‫falamos tantas vezes neste ponto e criar sua própria

31
00:01:30,450 --> 00:01:31,450
‫função de middleware.

32
00:01:32,470 --> 00:01:34,950
‫Então, deixe-me escrever aqui como um comentário.

33
00:01:34,950 --> 00:01:36,160
‫Então, eu

34
00:01:39,370 --> 00:01:43,060
‫quero que você crie uma função de middleware checkBody e

35
00:01:43,060 --> 00:01:44,660
‫nela eu quero que

36
00:01:47,620 --> 00:01:52,620
‫você verifique se o corpo contém a propriedade name para o nome do

37
00:01:52,670 --> 00:01:54,770
‫tour e a propriedade price.

38
00:01:54,770 --> 00:01:58,020
‫Tudo bem? E se não, quero que você envie de

39
00:01:58,020 --> 00:01:59,590
‫volta um código de status quatrocentos.

40
00:01:59,590 --> 00:02:04,000
‫Caso contrário, devolva quatrocentos, o que significa

41
00:02:04,000 --> 00:02:05,630
‫pedido incorreto.

42
00:02:05,630 --> 00:02:09,190
‫Então, basicamente, uma solicitação inválida do cliente, que neste

43
00:02:09,190 --> 00:02:13,060
‫caso, está tentando criar um novo passeio sem um nome e

44
00:02:13,060 --> 00:02:15,090
‫sem uma propriedade de preço.

45
00:02:15,090 --> 00:02:16,693
‫OK! E é isso mesmo.

46
00:02:19,580 --> 00:02:20,640
‫E (risos) na verdade não.

47
00:02:20,640 --> 00:02:25,640
‫Portanto, também quero que você o adicione à pilha do manipulador de postagem.

48
00:02:28,600 --> 00:02:29,900
‫Basicamente. OK?

49
00:02:29,900 --> 00:02:31,700
‫Então, eu quero que você adicione aqui.

50
00:02:31,700 --> 00:02:33,430
‫E vou realmente dizer a você

51
00:02:33,430 --> 00:02:35,730
‫como fazer isso porque não o fizemos neste momento.

52
00:02:35,730 --> 00:02:40,690
‫Então é muito fácil. Digamos que nossa função seja chamada de

53
00:02:40,690 --> 00:02:43,590
‫middleware e, portanto, o que você precisa fazer é

54
00:02:43,590 --> 00:02:46,800
‫simplesmente adicionar essa função aqui, antes do manipulador createTour que

55
00:02:46,800 --> 00:02:49,180
‫criará o tour. OK?

56
00:02:49,180 --> 00:02:53,630
‫Assim, quando tivermos uma solicitação de postagem para essa

57
00:02:53,630 --> 00:02:57,334
‫rota, ele executará esse middleware primeiro e só

58
00:02:57,334 --> 00:02:59,280
‫depois o createTour.

59
00:02:59,280 --> 00:03:02,740
‫OK? Então é assim que encadeamos dois middlewares diferentes.

60
00:03:02,740 --> 00:03:06,370
‫Mas agora quero que você vá em frente e crie este

61
00:03:06,370 --> 00:03:08,290
‫middleware, na verdade, chamado checkBody.

62
00:03:08,290 --> 00:03:11,423
‫Portanto, pause o vídeo agora e tente fazê-lo por conta própria.

63
00:03:15,220 --> 00:03:18,920
‫OK! Espero que você tenha tido

64
00:03:18,920 --> 00:03:21,250
‫sucesso fazendo isso, tenha testado e tudo funcione.

65
00:03:21,250 --> 00:03:24,323
‫Agora, deixe-me ir em frente e implementá-lo do meu jeito.

66
00:03:25,800 --> 00:03:28,210
‫Portanto, temos esse erro aqui, mas não se preocupe com isso.

67
00:03:28,210 --> 00:03:31,083
‫É por causa desse middleware que não está definido.

68
00:03:33,120 --> 00:03:36,553
‫E então deixe-me fazer isso aqui logo após o middleware checkID.

69
00:03:38,440 --> 00:03:40,297
‫Portanto, as exportações. checkBody.

70
00:03:44,760 --> 00:03:47,503
‫Temos que solicitar resposta e em seguida.

71
00:03:48,510 --> 00:03:51,560
‫E então é realmente muito simples.

72
00:03:51,560 --> 00:03:56,030
‫Portanto, se não houver pedido. corpo. nome, e acho que

73
00:03:57,050 --> 00:03:59,080
‫esse é o nome, mas vamos

74
00:03:59,080 --> 00:04:01,070
‫rapidamente em frente e verificar isso.

75
00:04:01,070 --> 00:04:03,570
‫Então aqui está um tour simples.

76
00:04:03,570 --> 00:04:05,340
‫Sim, e de fato é chamado de 'nome'

77
00:04:05,340 --> 00:04:06,790
‫e o outro é 'preço'.

78
00:04:09,810 --> 00:04:13,420
‫Portanto, se não houver nome do corpo da solicitação

79
00:04:13,420 --> 00:04:17,560
‫ou nenhum corpo da solicitação. bom preço, neste

80
00:04:20,440 --> 00:04:24,460
‫caso, iremos, como antes, retornar desta função e

81
00:04:24,460 --> 00:04:27,163
‫enviar de volta uma resposta.

82
00:04:28,500 --> 00:04:33,500
‫Portanto, o status aqui é lembrado: quatrocentos e depois algum

83
00:04:33,610 --> 00:04:37,283
‫'json' onde o status é falha.

84
00:04:38,520 --> 00:04:41,560
‫Então é sempre quando temos um código de quatrocentos.

85
00:04:41,560 --> 00:04:42,750
‫Adicione a mensagem

86
00:04:45,097 --> 00:04:46,180
‫"Nome

87
00:04:47,910 --> 00:04:49,400
‫ou preço ausente".

88
00:04:49,400 --> 00:04:53,240
‫OK? Portanto, o preço e o nome precisam estar presentes ao mesmo tempo.

89
00:04:53,240 --> 00:04:57,500
‫Portanto, se o preço não estiver lá ou o nome não estiver

90
00:04:57,500 --> 00:04:59,993
‫lá, já enviamos esta mensagem de erro.

91
00:05:00,830 --> 00:05:04,500
‫OK? Mas se tudo estiver correto, então queremos

92
00:05:04,500 --> 00:05:06,283
‫passar para o próximo middleware.

93
00:05:07,864 --> 00:05:09,110
‫E é isso que dizemos aqui.

94
00:05:09,110 --> 00:05:12,650
‫E o próximo middleware será, obviamente, o createTour.

95
00:05:14,833 --> 00:05:15,666
‫Então, este aqui.

96
00:05:17,260 --> 00:05:20,750
‫Então, vamos prosseguir e adicioná-lo aqui.

97
00:05:20,750 --> 00:05:22,150
‫Então, tourController. checkBody.

98
00:05:25,090 --> 00:05:29,180
‫Tudo bem, agora o erro desapareceu e devemos ser

99
00:05:29,180 --> 00:05:33,562
‫capazes de testá-lo agora. Então, vamos fechar aqueles

100
00:05:33,562 --> 00:05:38,000
‫nos quais não estamos interessados e criar um novo tour.

101
00:05:38,000 --> 00:05:40,890
‫Portanto, agora temos nosso corpo com o nome, a duração

102
00:05:40,890 --> 00:05:43,080
‫e a dificuldade, mas não há preço.

103
00:05:43,080 --> 00:05:46,160
‫Portanto, agora devemos obter nosso erro. Direito?

104
00:05:46,160 --> 00:05:50,150
‫Então, vamos testar isso. Mandar. E, de fato,

105
00:05:50,150 --> 00:05:53,630
‫temos 'Nome ou preço ausente' em nosso pedido incorreto de quatrocentos.

106
00:05:53,630 --> 00:05:57,090
‫OK? E então vamos analisar o que aconteceu aqui novamente.

107
00:05:57,090 --> 00:06:00,830
‫Então nosso pedido atingiu essa rota aqui e foi

108
00:06:00,830 --> 00:06:05,360
‫um pedido de postagem. E então, ele executa essa

109
00:06:05,360 --> 00:06:09,980
‫função de middleware e, a partir dessa função, enviamos essa uh

110
00:06:10,830 --> 00:06:15,380
‫resposta dizendo que, bem, o nome ou o preço está faltando.

111
00:06:15,380 --> 00:06:17,730
‫OK? Mas se agora adicionar o preço ... então realmente

112
00:06:21,530 --> 00:06:23,730
‫não importa o preço, envie-o, então

113
00:06:23,730 --> 00:06:26,940
‫tudo funciona bem e nós temos um 201 criado.

114
00:06:26,940 --> 00:06:29,083
‫Então o que aconteceu desta vez? Bem, ele verificou o corpo e esta

115
00:06:30,480 --> 00:06:34,380
‫condição não era verdadeira e

116
00:06:34,380 --> 00:06:37,650
‫então chamou o próximo middleware na pilha que é createTour.

117
00:06:37,650 --> 00:06:41,420
‫Então, ele criou um tour e devolveu o resultado

118
00:06:41,420 --> 00:06:44,540
‫e assim, encerrou o ciclo de solicitação-resposta.

119
00:06:44,540 --> 00:06:47,790
‫Direito? Espero que tenha sido um pequeno desafio e

120
00:06:47,790 --> 00:06:52,790
‫que estejamos usando esse tipo

121
00:06:52,930 --> 00:06:56,340
‫de lógica aqui o tempo todo, onde encadeamos vários

122
00:06:56,340 --> 00:06:59,560
‫tipos de manipuladores aqui para a mesma rota. Então por exemplo aqui poderíamos verificar se um determinado usuário está

123
00:06:59,560 --> 00:07:02,760
‫logado ou se ele tem

124
00:07:02,760 --> 00:07:06,540
‫os privilégios, então os direitos de acesso, até mesmo para escrever um novo tour.

125
00:07:06,540 --> 00:07:10,320
‫Ou realmente todos os tipos de coisas que queremos que

126
00:07:10,320 --> 00:07:13,300
‫aconteçam antes de a turnê ser criada.

127
00:07:13,300 --> 00:07:15,940
‫OK? E mais uma vez fazemos isso porque queremos pegar

128
00:07:15,940 --> 00:07:19,100
‫toda a lógica que não

129
00:07:19,100 --> 00:07:22,360
‫está realmente preocupada em criar o novo recurso fora desse manipulador. Para que esse manipulador se preocupe apenas

130
00:07:22,360 --> 00:07:25,860
‫realmente com o

131
00:07:25,860 --> 00:07:27,890
‫trabalho que deve fazer.

