﻿1
00:00:01,437 --> 00:00:03,800
‫-: (Hombre) Entonces, en esta conferencia, aprenderá

2
00:00:03,800 --> 00:00:07,093
‫cómo encadenar múltiples funciones de middleware para la misma ruta.

3
00:00:08,490 --> 00:00:11,500
‫Así que hasta este punto, siempre que

4
00:00:11,500 --> 00:00:15,610
‫queríamos definir un middleware, solo pasábamos una función de middleware.

5
00:00:15,610 --> 00:00:19,510
‫Entonces, por ejemplo, aquí, para manejar esta solicitud de

6
00:00:19,510 --> 00:00:22,700
‫publicación, solo pasamos esta función de middleware que

7
00:00:22,700 --> 00:00:24,930
‫es nuestro controlador createTour.

8
00:00:24,930 --> 00:00:27,400
‫¿Okey? Y esa es la

9
00:00:27,400 --> 00:00:30,880
‫única función que se llamará cada vez que recibamos una solicitud de publicación.

10
00:00:30,880 --> 00:00:33,840
‫¿Derecha? Pero digamos ahora que

11
00:00:33,840 --> 00:00:35,940
‫queremos ejecutar múltiples funciones de middleware.

12
00:00:35,940 --> 00:00:39,280
‫Ahora podría preguntar "¿Por qué querríamos hacer eso? ".

13
00:00:39,280 --> 00:00:42,713
‫Bueno, podríamos, por ejemplo, ejecutar un middleware antes de

14
00:00:42,713 --> 00:00:45,760
‫createTour aquí para verificar realmente los datos que

15
00:00:45,760 --> 00:00:47,060
‫ingresan al cuerpo.

16
00:00:47,060 --> 00:00:50,490
‫¿Derecha? Un poco similar a lo que teníamos antes.

17
00:00:50,490 --> 00:00:53,670
‫Así que hicimos este middleware de verificación de ID

18
00:00:53,670 --> 00:00:57,240
‫antes para verificar si la ID es realmente válida y hacerlo

19
00:00:57,240 --> 00:00:59,430
‫fuera de los controladores de ruta

20
00:00:59,430 --> 00:01:03,140
‫reales para que solo se preocupen por obtener, actualizar o eliminar

21
00:01:03,140 --> 00:01:04,080
‫un recorrido.

22
00:01:04,080 --> 00:01:07,340
‫¿Derecha? Y aquí, en este ejemplo específico

23
00:01:07,340 --> 00:01:09,130
‫con publicación, podríamos querer hacer lo mismo.

24
00:01:09,130 --> 00:01:12,900
‫Entonces, como dije, es posible que deseemos verificar si se solicita. buddy en realidad contiene

25
00:01:12,900 --> 00:01:16,080
‫los datos que queremos para el recorrido.

26
00:01:16,080 --> 00:01:18,440
‫¿Okey? Y entonces hagamos eso.

27
00:01:18,440 --> 00:01:22,020
‫Y de hecho, quiero que primero lo hagas por tu cuenta.

28
00:01:22,020 --> 00:01:25,240
‫Así que este es un desafío que quiero que completes para

29
00:01:25,240 --> 00:01:27,670
‫poder usar los conceptos de los que hemos

30
00:01:27,670 --> 00:01:30,450
‫hablado tantas veces en este punto y crear tu propia

31
00:01:30,450 --> 00:01:31,450
‫función de middleware.

32
00:01:32,470 --> 00:01:34,950
‫Así que déjame escribirlo aquí como comentario.

33
00:01:34,950 --> 00:01:36,160
‫Así que

34
00:01:39,370 --> 00:01:43,060
‫quiero que cree una función de middleware checkBody y

35
00:01:43,060 --> 00:01:44,660
‫allí quiero que compruebe

36
00:01:47,620 --> 00:01:52,620
‫si el cuerpo contiene la propiedad de nombre para el nombre del recorrido

37
00:01:52,670 --> 00:01:54,770
‫y la propiedad de precio.

38
00:01:54,770 --> 00:01:58,020
‫¿Está bien? Y si no, quiero que me envíe

39
00:01:58,020 --> 00:01:59,590
‫un código de estado de cuatrocientos.

40
00:01:59,590 --> 00:02:04,000
‫Si no es así, devuelva cuatrocientos, lo que significa

41
00:02:04,000 --> 00:02:05,630
‫una mala solicitud.

42
00:02:05,630 --> 00:02:09,190
‫Básicamente, una solicitud no válida del cliente, que en este

43
00:02:09,190 --> 00:02:13,060
‫caso es intentar crear un nuevo recorrido sin un nombre y

44
00:02:13,060 --> 00:02:15,090
‫sin una propiedad de precio.

45
00:02:15,090 --> 00:02:16,693
‫¡Okey! Y eso es todo.

46
00:02:19,580 --> 00:02:20,640
‫Y (risas) en realidad no.

47
00:02:20,640 --> 00:02:25,640
‫Así que también quiero que lo agregue a la pila del controlador de publicaciones.

48
00:02:28,600 --> 00:02:29,900
‫Básicamente. ¿Okey?

49
00:02:29,900 --> 00:02:31,700
‫Así que quiero que lo agregue aquí.

50
00:02:31,700 --> 00:02:33,430
‫Y de hecho les diré cómo

51
00:02:33,430 --> 00:02:35,730
‫hacerlo porque no lo hicimos en este momento.

52
00:02:35,730 --> 00:02:40,690
‫Entonces es muy fácil. Digamos que nuestra función se llama middleware y,

53
00:02:40,690 --> 00:02:43,590
‫por lo tanto, lo que debe hacer es simplemente

54
00:02:43,590 --> 00:02:46,800
‫agregar esa función aquí antes del controlador createTour que finalmente

55
00:02:46,800 --> 00:02:49,180
‫creará el recorrido. ¿Okey?

56
00:02:49,180 --> 00:02:53,630
‫De esta manera, cuando tengamos una solicitud de publicación para

57
00:02:53,630 --> 00:02:57,334
‫esta ruta, primero ejecutará este middleware y solo

58
00:02:57,334 --> 00:02:59,280
‫luego el createTour.

59
00:02:59,280 --> 00:03:02,740
‫¿Okey? Así es como encadenamos dos middlewares diferentes.

60
00:03:02,740 --> 00:03:06,370
‫Pero ahora quiero que continúes y crees este

61
00:03:06,370 --> 00:03:08,290
‫middleware llamado checkBody.

62
00:03:08,290 --> 00:03:11,423
‫Así que pausa el video ahora e intenta hacerlo por tu cuenta.

63
00:03:15,220 --> 00:03:18,920
‫¡Okey! Así que espero que haya tenido éxito

64
00:03:18,920 --> 00:03:21,250
‫al hacerlo y luego lo haya probado y que todo funcione.

65
00:03:21,250 --> 00:03:24,323
‫Así que ahora déjame implementarlo a mi manera.

66
00:03:25,800 --> 00:03:28,210
‫Entonces tenemos este error aquí, pero no se preocupe.

67
00:03:28,210 --> 00:03:31,083
‫Es debido a este middleware que no está definido.

68
00:03:33,120 --> 00:03:36,553
‫Y déjeme hacerlo aquí justo después del middleware checkID.

69
00:03:38,440 --> 00:03:40,297
‫Entonces exporta. checkBody.

70
00:03:44,760 --> 00:03:47,503
‫Tenemos que solicitar respuesta y siguiente.

71
00:03:48,510 --> 00:03:51,560
‫Y entonces, en realidad, es bastante simple.

72
00:03:51,560 --> 00:03:56,030
‫Entonces, si no hay ninguna solicitud. cuerpo. nombre, y creo

73
00:03:57,050 --> 00:03:59,080
‫que ese es el nombre,

74
00:03:59,080 --> 00:04:01,070
‫pero vayamos rápidamente a comprobarlo.

75
00:04:01,070 --> 00:04:03,570
‫Así que aquí es un recorrido simple.

76
00:04:03,570 --> 00:04:05,340
‫Sí, y de hecho se llama "nombre"

77
00:04:05,340 --> 00:04:06,790
‫y el otro es "precio".

78
00:04:09,810 --> 00:04:13,420
‫Entonces, si no hay un nombre de cuerpo de solicitud

79
00:04:13,420 --> 00:04:17,560
‫o ningún cuerpo de solicitud. precio bueno, en

80
00:04:20,440 --> 00:04:24,460
‫este caso, como antes, regresaremos de esta

81
00:04:24,460 --> 00:04:27,163
‫función y enviaremos una respuesta.

82
00:04:28,500 --> 00:04:33,500
‫Entonces, el estado aquí es recordar: cuatrocientos agreguen y luego

83
00:04:33,610 --> 00:04:37,283
‫algún 'json' donde el estado es error.

84
00:04:38,520 --> 00:04:41,560
‫Entonces es siempre cuando tenemos un código cuatrocientos.

85
00:04:41,560 --> 00:04:42,750
‫Agregue luego el

86
00:04:45,097 --> 00:04:46,180
‫mensaje

87
00:04:47,910 --> 00:04:49,400
‫"Falta nombre o precio".

88
00:04:49,400 --> 00:04:53,240
‫¿Okey? Por lo tanto, el precio y el nombre deben estar allí al mismo tiempo.

89
00:04:53,240 --> 00:04:57,500
‫Entonces, si el precio no está allí o el nombre no está,

90
00:04:57,500 --> 00:04:59,993
‫entonces ya enviamos este mensaje de error.

91
00:05:00,830 --> 00:05:04,500
‫¿Okey? Pero si todo está correcto, entonces

92
00:05:04,500 --> 00:05:06,283
‫queremos pasar al siguiente middleware.

93
00:05:07,864 --> 00:05:09,110
‫Y eso es lo que decimos aquí.

94
00:05:09,110 --> 00:05:12,650
‫Y luego, por supuesto, el próximo middleware será createTour.

95
00:05:14,833 --> 00:05:15,666
‫Entonces este.

96
00:05:17,260 --> 00:05:20,750
‫Entonces, sigamos adelante y luego agréguelo aquí.

97
00:05:20,750 --> 00:05:22,150
‫Entonces tourController. checkBody.

98
00:05:25,090 --> 00:05:29,180
‫Muy bien, ahora el error desapareció y deberíamos

99
00:05:29,180 --> 00:05:33,562
‫poder probarlo ahora. Así que cerremos los

100
00:05:33,562 --> 00:05:38,000
‫que no nos interesan y creemos un nuevo recorrido.

101
00:05:38,000 --> 00:05:40,890
‫Así que ahora mismo tenemos nuestro cuerpo con el nombre, la

102
00:05:40,890 --> 00:05:43,080
‫duración y la dificultad, pero no hay precio.

103
00:05:43,080 --> 00:05:46,160
‫Entonces ahora deberíamos obtener nuestro error. ¿Derecha?

104
00:05:46,160 --> 00:05:50,150
‫Así que probemos eso. Enviar. Y, de hecho,

105
00:05:50,150 --> 00:05:53,630
‫tenemos 'Falta nombre o precio' con nuestra solicitud incorrecta de cuatrocientos.

106
00:05:53,630 --> 00:05:57,090
‫¿Okey? Entonces analicemos lo que sucedió aquí nuevamente.

107
00:05:57,090 --> 00:06:00,830
‫Entonces, nuestra solicitud llegó a esta ruta aquí y

108
00:06:00,830 --> 00:06:05,360
‫fue una solicitud posterior. Entonces, ejecuta esta función

109
00:06:05,360 --> 00:06:09,980
‫de middleware y desde esta función, enviamos esta respuesta

110
00:06:10,830 --> 00:06:15,380
‫diciendo que, bueno, falta el nombre o el precio.

111
00:06:15,380 --> 00:06:17,730
‫¿Okey? Pero si ahora suma el precio ... así que realmente

112
00:06:21,530 --> 00:06:23,730
‫no importa el precio, envíalo, bueno,

113
00:06:23,730 --> 00:06:26,940
‫entonces todo funciona bien y obtenemos un 201 creado.

114
00:06:26,940 --> 00:06:29,083
‫Entonces, ¿qué pasó esta vez? Bueno, verificó el cuerpo y esta condición

115
00:06:30,480 --> 00:06:34,380
‫no era verdadera, por lo

116
00:06:34,380 --> 00:06:37,650
‫que llamó al siguiente middleware de la pila, que es createTour.

117
00:06:37,650 --> 00:06:41,420
‫Entonces creó un recorrido y envió el resultado y

118
00:06:41,420 --> 00:06:44,540
‫así, terminó el ciclo de solicitud-respuesta.

119
00:06:44,540 --> 00:06:47,790
‫¿Derecha? Así que espero que haya sido un pequeño

120
00:06:47,790 --> 00:06:52,790
‫desafío agradable y usaremos este tipo

121
00:06:52,930 --> 00:06:56,340
‫de lógica aquí todo el tiempo, donde encadenamos varios

122
00:06:56,340 --> 00:06:59,560
‫tipos de controladores aquí para la misma ruta. Entonces, por ejemplo, aquí podríamos verificar si un determinado usuario está

123
00:06:59,560 --> 00:07:02,760
‫conectado o si tiene los

124
00:07:02,760 --> 00:07:06,540
‫privilegios, por lo que los derechos de acceso, incluso para escribir un nuevo recorrido.

125
00:07:06,540 --> 00:07:10,320
‫O realmente todo tipo de cosas que queremos que sucedan

126
00:07:10,320 --> 00:07:13,300
‫antes de que se cree la gira.

127
00:07:13,300 --> 00:07:15,940
‫¿Okey? Y una vez más lo hacemos porque queremos tomar toda

128
00:07:15,940 --> 00:07:19,100
‫la lógica que realmente no

129
00:07:19,100 --> 00:07:22,360
‫está relacionada con la creación del nuevo recurso fuera de ese controlador. De modo que ese manejador solo se preocupa realmente

130
00:07:22,360 --> 00:07:25,860
‫por el trabajo que

131
00:07:25,860 --> 00:07:27,890
‫se supone que debe hacer.

