‫Instructor: Entonces, después de toda la charla sobre
‫middleware, sigamos adelante
‫y creemos nuestras propias funciones de middleware.
‫Y nuevamente, recuerde que
‫en realidad ya usamos middleware antes.
‫Así que echemos un vistazo a eso.
‫Y, en algún lugar aquí arriba.
‫Y entonces, ves que para
‫usar middleware, usamos el uso de puntos de aplicaciones, ¿de acuerdo?
‫Entonces, el método de uso es el que usamos para,
‫sí, realmente usar middleware.
‫Entonces, agregue middleware a nuestra pila de middleware, ¿de acuerdo?
‫Entonces, este punto expreso json aquí que llama a este método json
‫básicamente devuelve una función, ¿de acuerdo?
‫Y entonces esa función se agrega a la pila de middleware.
‫Y así, similar a
‫eso, podemos crear nuestra propia función de middleware.
‫Entonces, hagámoslo ahora.
‫Y entonces, por supuesto, todavía necesitamos usar el uso de puntos de la aplicación.
‫Bien, y ahora, aquí, todo lo que tenemos que hacer
‫es la ruta en nuestra función que queremos agregar a la pila de middleware.
‫Entonces, recuerde del último video que,
‫por supuesto, en cada función
‫de middleware, tenemos acceso a la solicitud y la respuesta, ¿de acuerdo?
‫Pero también tenemos la siguiente función.
‫Y así, así, editamos como tercer argumento para
‫esta función de middleware, ¿de acuerdo?
‫Y así, Express entonces sabe que
‫en realidad estamos definiendo un middleware aquí.
‫Bien.
‫Ahora, al igual
‫que antes, en realidad, podríamos haber llamado a este
‫argumento aquí de otra manera, como X, o N, o, realmente no importa.
‫Lo que importa es
‫que es el tercer argumento de esta función.
‫Entonces, express básicamente pasa la siguiente
‫función como tercer argumento a esta función de middleware.
‫Y luego podemos llamarlo como queramos.
‫Pero nuevamente, lo siguiente es realmente la convención en
‫express, y para
‫evitar confusiones, siempre usamos este nombre, ¿de acuerdo?
‫Y lo mismo para solicitud
‫y respuesta, como mencioné antes, podríamos llamarlos de otra manera.
‫Pero la convención es llamarlos así.
‫De todos modos, registremos algo en la consola,
‫aquí en esta función de
‫middleware, solo para que tengamos algo de código para ejecutar
‫cada vez que haya una nueva solicitud.
‫Digamos hola
‫desde el middleware.
‫Y agregue algunos emoji aquí, nuevamente, para que resalte un poco.
‫Realmente me gusta eso.
‫¿Y que pasa aqui?
‫Ah bien.
‫Entonces ese es el código que queremos ejecutar aquí.
‫Y ahora, tal como hablamos en el
‫último video, necesitamos llamar a la siguiente función, ¿de acuerdo?
‫Y si no llamamos a
‫continuación aquí, bueno, entonces el ciclo de solicitud
‫/ respuesta realmente se atascaría en este punto.
‫No podríamos seguir
‫adelante y nunca jamás enviaríamos una respuesta al cliente.
‫Así que no puedo enfatizar lo suficiente lo importante
‫que es no olvidar nunca usar next en todo su middleware.
‫Está bien, y es tan simple como eso.
‫Todo lo que tenemos que hacer es especificar a continuación.
‫Entonces, este argumento aquí.
‫Y luego llamar a esa función de esta manera.
‫Bueno.
‫Y con eso, estamos realmente listos para probarlo.
‫Y todo lo que tenemos
‫que hacer es enviar una simple solicitud a nuestra API.
‫Entonces, aquí está la API.
‫Cerremos este de aquí.
‫Entonces, realmente no importa, porque esto,
‫por supuesto, se aplica a todas las solicitudes.
‫Entonces, regresemos.
‫Y de hecho, hemos recibido un saludo
‫desde el middleware registrado en nuestra consola, ¿de acuerdo?
‫Que bien.
‫Y quería tocar rápidamente lo que acabo de decir antes, que
‫es que este middleware aquí se
‫aplica a todas y cada una de las solicitudes, ¿de acuerdo?
‫Y eso es porque no especificamos ninguna ruta.
‫Entonces, recuerde que antes dije que todos los controladores de ruta aquí
‫son en realidad una especie de middleware en sí mismos.
‫Son simplemente funciones de
‫middleware que solo se aplican a una determinada URL.
‫Así que una ruta determinada, está bien.
‫Pero estas funciones de middleware más
‫simples que definimos
‫aquí, bueno, se aplicarán a cada solicitud.
‫Al menos, si el controlador de ruta
‫viene antes de este middleware.
‫Así que déjame mostrarte algo.
‫Y lo voy a cortar de aquí
‫y ahora lo pondré aquí después
‫de este controlador de ruta.
‫Entonces, ¿qué crees que va a
‫pasar ahora cuando haga una llamada a esta ruta?
‫Así que veamos qué pasa.
‫Así que esta ruta exacta, la que acabo de mostrarles, déjame
‫enviar la solicitud a eso.
‫Y ahora regresemos y ahora no tenemos el
‫saludo del middleware.
‫Entonces, ¿por qué es eso?
‫Bueno, simplemente porque este middleware, entonces este
‫controlador de ruta aquí,
‫viene antes que esta función de middleware que tenemos aquí.
‫Y este controlador de ruta, que en este
‫caso es obtener todos los recorridos, en realidad finaliza el ciclo de respuesta a la solicitud.
‫Así que echemos un vistazo a eso.
‫Así que tenemos todos los tours.
‫Entonces, ¿dónde está eso?
‫Sí, aquí está la función y enviando un resultado con
‫res dot json, en realidad finalizamos
‫el ciclo de respuesta a la solicitud.
‫Entonces, el siguiente middleware en la pila,
‫que en este caso, es
‫este, por lo que no se llamará a nuestro personalizado.
‫De nuevo, porque el ciclo ya ha terminado, está bien.
‫Así que asegúrese de comprender que este orden realmente
‫importa mucho en expreso, de acuerdo.
‫Es fundamental entender que así
‫es como funcionan las aplicaciones exprés, de acuerdo.
‫Entonces, para probar eso, intentemos
‫ver qué sucede cuando
‫hacemos una solicitud a esta ruta.
‫Entonces, para obtener el recorrido, actualizar el recorrido o eliminar el recorrido.
‫Así que hagamos esto, enviemos la solicitud aquí,
‫y regresemos y ahora tenemos un saludo
‫desde el middleware.
‫Entonces eso es realmente lo que esperábamos, ¿verdad?
‫Eso es porque, por supuesto, este middleware aquí ahora
‫está antes del controlador de ruta.
‫Y, por lo tanto, es parte de la pila de
‫middleware que se ejecuta antes de que finalice el ciclo de respuesta a la solicitud.
‫¿Tiene sentido?
‫Entonces, retomemos eso y, por lo general,
‫definimos este tipo de middleware global
‫aquí antes de todos nuestros controladores de ruta.
‫Muy bien, esta es una función
‫de middleware muy simple que acabamos de definir para ejecutar algún código.
‫Pero hagamos otro.
‫Y, por supuesto,
‫podemos tener tantas funciones de middleware como queramos.
‫Y esta vez realmente
‫queremos manipular el objeto de solicitud.
‫Entonces, la firma aquí es siempre
‫la misma, siempre solicitud, respuesta y siguiente.
‫Y ahora manipulemos realmente la solicitud.
‫Todo lo que queremos
‫hacer en este caso es agregar la hora actual a la solicitud.
‫Entonces, simplemente podemos definir una propiedad
‫en el objeto de solicitud llamado tiempo de solicitud.
‫Y luego configúrelo en una nueva
‫fecha,
‫que básicamente se traduce en ahora.
‫Y luego podemos usar una función de fecha muy útil,
‫que se llama a una cadena ISO, que
‫luego la convertirá en una cadena
‫agradable y legible para nosotros.
‫Entonces, supongamos que tenemos un controlador de ruta
‫que realmente necesita la
‫información sobre cuándo ocurre exactamente la solicitud.
‫Entonces, la solución muy simple es
‫simplemente agregar algo como esto a una solicitud usando middleware.
‫¿Bien?
‫Ahora, no olvide, por
‫supuesto, llamar al siguiente middleware de la pila, está bien.
‫Así que ahora mismo, tenemos tiempo de solicitud para todas las solicitudes.
‫Entonces, ahora podemos usar algún controlador de ruta
‫aquí, por ejemplo, (murmullos) para que todos los recorridos
‫simplemente lo registren en la consola.
‫Entonces, el registro de puntos de la consola y su tiempo de solicitud en realidad.
‫Está bien, o incluso podríamos enviar esto en la respuesta también.
‫Déjame probar eso.
‫Y simplemente llamemos a
‫este solicitado en y req dot request time.
‫Ese es.
‫Y entonces, sí, sigamos adelante y averigüemos esto.
‫Entonces nuestro middleware es correcto, ¿verdad?
‫Sí, entonces llamamos a continuación, cuando hayamos terminado, así
‫que probemos esto ahora.
‫Recuerde que está en todos los recorridos.
‫Y cuando regresemos ahora, o cuando
‫subamos, bueno, debería estar aquí.
‫Entonces, ¿qué está mal aquí?
‫Verá que
‫aquí abajo, en realidad solo registramos una
‫función y sí, por supuesto, en realidad no llamamos a las dos cadenas ISO.
‫Entonces es un método que tenemos que llamarlo.
‫Así que dale una oportunidad, inténtalo de nuevo.
‫Y ahora hemos solicitado en y luego la fecha de hoy.
‫Tan perfecto.
‫Eso vino de nuestro middleware.
‫Así que simplemente porque agregamos esa propiedad a nuestra solicitud.
‫Excelente.
‫Así que espero que con eso, hayas dado un gran
‫paso adelante para comprender realmente cómo funciona la aplicación Node, cómo
‫funciona el middleware,
‫cómo funciona todo el ciclo de respuesta a
‫la solicitud, porque eso realmente marcará
‫la diferencia cuando escribas sus propias aplicaciones.