‫Instructor:
‫En esta lección, aprenderá
‫una manera fácil de definir parámetros directamente en
‫la URL, cómo leer estos parámetros
‫y también cómo responder a ellos.
‫Ahora, lo que realmente queremos implementar en esta conferencia
‫es una forma de obtener solo un recorrido.
‫Entonces, en este momento, tenemos este punto
‫final aquí, que nos brinda
‫todos los recorridos, y queremos tener algo como esto.
‫Copiémoslo en una nueva solicitud por ahora, y luego,
‫queremos una barra oblicua y luego la ID del recorrido.
‫Entonces, por ejemplo, digamos cinco, ¿de acuerdo?
‫Entonces, esto es como hablamos
‫en la conferencia de la API
‫REST, donde dije que si llegamos a este punto final sin ningún
‫ID, así como aquí,
‫bueno, obtendríamos todos los recorridos.
‫Pero si especificamos un ID después de eso, así,
‫así, y por supuesto
‫no tiene que ser un ID,
‫puede ser cualquier identificador único, pero en
‫este caso, la forma más fácil de implementarlo
‫es simplemente usa identificaciones, ¿de acuerdo?
‫Entonces, esto aquí es, por supuesto, una variable,
‫porque puede ser cinco, pero también puede ser cualquier otra cosa.
‫Entonces, esta parte de la URL
‫aquí, esto de aquí, es una variable, ¿de acuerdo?
‫Entonces, lo que
‫tenemos que hacer es definir una ruta que pueda aceptar una variable.
‫Muy bien, hagámoslo aquí, y de hecho
‫justo después de este.
‫Y voy a seguir adelante y
‫copiarlo, porque ya sabes cómo escribirlo en este momento.
‫Y así, sí.
‫Entonces aquí tenemos la
‫ruta, y ahora todo lo que tenemos que hacer es agregar esa variable.
‫Y eso es muy fácil.
‫Entonces tenemos nuestra barra inclinada nuevamente, y
‫luego la variable, la definimos usando dos puntos, así.
‫Y así, creamos una variable llamada ID.
‫Por supuesto, podría ser cualquier
‫otra cosa, como var o X.
‫Realmente no importa.
‫Pero este se llama ID, ¿de acuerdo?
‫Ahora no queremos enviar nada como
‫esto, así que comentémoslo.
‫Y lo que quiero que eches un
‫vistazo es en el registro
‫de puntos de la consola, req dot params.
‫De acuerdo, solicitar dot params es donde se almacenan todos los
‫parámetros de todas las variables que definimos aquí, ¿de acuerdo?
‫Entonces, estas variables aquí en la URL se llaman parámetros
‫y, nuevamente, están en req dot params,
‫disponibles para que las usemos ahora.
‫Así que echemos un vistazo ahora
‫y hagamos esta solicitud.
‫Y por ahora, no va a hacer
‫nada, por lo que no nos dará la
‫gira número cinco automáticamente, por supuesto.
‫Pero lo que quiero hacer
‫por ahora es simplemente echar un vistazo a req dot params.
‫Y, de hecho, aquí tenemos, ID es cinco.
‫Por lo tanto, request dot params es un
‫objeto muy agradable que asigna automáticamente
‫el valor a nuestra variable, por lo que nuestro parámetro que definimos.
‫Y de hecho podríamos definir múltiples.
‫Entonces podríamos decir ID,
‫y luego podríamos decir X, y podríamos decir
‫Y, y luego, por supuesto, tendríamos que definirlos todos.
‫Entonces 23
‫y 45, digamos.
‫Envía a este chico.
‫Y luego, de hecho,
‫tenemos un objeto con estas tres variables en ellos.
‫Bien, ahora si los definimos así en la URL,
‫en realidad tenemos que especificarlos.
‫Entonces, si no tuviéramos el parámetro
‫Y, nos encontraríamos con un
‫error, porque ahora no estamos siguiendo esta ruta exacta, ¿de acuerdo?
‫Así que nuestra ruta ya no es exactamente
‫esta, sino solo esta.
‫Entonces, hay un error, ¿de acuerdo?
‫¿Tener sentido?
‫Ahora bien, hay una cosa que podemos
‫hacer y son los parámetros opcionales.
‫Entonces, si desea que este parámetro sea opcional, simplemente
‫le agregamos un signo de interrogación,
‫y ahora es opcional, por lo que ya no tenemos que especificarlo.
‫Así que así.
‫Y ahora solo tenemos cinco, 23, y luego Y
‫todavía está aquí, pero no está definido, porque
‫ahora es opcional.
‫Está bien.
‫Pero deshagámonos de todo esto,
‫porque solo necesitamos la identificación, ¿de acuerdo?
‫Y ahora todo
‫lo que tenemos que hacer es obtener el recorrido
‫con esta identificación de nuestros datos. json, de nuestro archivo JSON, ¿verdad?
‫Básicamente, de la gama de recorridos.
‫Y eso no debería ser demasiado difícil.
‫Y entonces, digamos,
‫const tour es igual
‫a tours dot
‫find.
‫Y no estoy seguro de si está familiarizado
‫con este método de búsqueda aquí.
‫Entonces, una vez más, esto no tiene nada que ver con
‫Node o Express, es solo una función de JavaScript
‫normal que puede usar en matrices.
‫Y la forma en que funciona es la siguiente.
‫Entonces aquí, pasamos una función de devolución de
‫llamada, así que permítanme comenzar escribiendo esa.
‫Entonces, el ID del elemento
‫es igual a los parámetros de
‫punto requeridos, ¿de acuerdo?
‫Entonces, básicamente recorrerá la matriz, y en
‫cada una de
‫las iteraciones, tendremos acceso al elemento actual
‫y devolveremos verdadero o falso en
‫cada una de las iteraciones, ¿de acuerdo?
‫Ahora, lo que hará el método de
‫búsqueda es que, básicamente, creará
‫una matriz que solo
‫contiene el elemento donde esta comparación aquí resulta ser cierta, ¿de acuerdo?
‫Y en esta situación, queremos encontrar el
‫elemento donde el ID es igual al
‫que obtenemos de los parámetros.
‫Entonces, al especificar esta función de devolución de llamada
‫aquí con esta comparación, nos aseguraremos de que
‫solo el elemento en el que el ID sea
‫realmente igual al ID especificado en los
‫parámetros se devuelva del método de
‫búsqueda y se almacene en el tour, ¿de acuerdo?
‫Ahora, en realidad, esto no va a funcionar así, porque como
‫ven aquí abajo, estos
‫valores aquí, en realidad son cadenas, ¿de acuerdo?
‫Necesitamos convertir eso en un número, pero eso
‫es muy fácil.
‫Todo lo que tenemos
‫que hacer es decir, el ID es igual a req
‫dot params dot ID multiplicado por uno.
‫Así que este es un
‫buen truco donde JavaScript, cuando multiplicamos una cadena que parece
‫un número, cuando lo multiplicamos por
‫otro número, automáticamente convertirá esa cadena en un número.
‫Ese es un truco muy pequeño y agradable que podemos usar aquí.
‫Y así, ahora, ya tenemos nuestro recorrido listo para enviar.
‫Y entonces los datos que
‫queremos enviar son recorridos
‫iguales a recorrido.
‫O en realidad, es solo una
‫gira, por lo que la gira debería ser igual a la gira, ¿de acuerdo?
‫¿Tener sentido?
‫Entonces, tal vez la parte más complicada aquí sea
‫solo esta, pero, sí, nuevamente es solo un JavaScript normal.
‫Y entonces creo, o al menos espero, que
‫ya estás familiarizado con el
‫uso de este tipo de métodos de matriz, ¿de acuerdo?
‫Entonces, solo queremos la gira número cinco.
‫Entonces, echemos un vistazo si realmente funciona.
‫Y bueno, no fue así, así que echemos un vistazo a eso.
‫Oh, sí, de hecho, aquí necesitamos usar la identificación, por supuesto.
‫Entonces no req. params.
‫IDENTIFICACIÓN.
‫Bien, inténtalo de nuevo.
‫Y ahora, de hecho, tenemos la gira con ID de cinco, está
‫bien, y solo esa gira única.
‫Probemos el número dos, por
‫ejemplo, y de hecho, el ID dos.
‫Pero ahora, probemos con otra situación.
‫Hagámoslo, ID 23, y ahora, no
‫obtenemos nada a cambio, ¿verdad?
‫Y eso es porque no hay un recorrido con el ID de 23,
‫pero aún devolvemos el código de estado 200 OK,
‫y eso no tiene mucho sentido, ¿de acuerdo?
‫Así que sigamos adelante y cambiemos eso.
‫¿Y qué debemos hacer aquí?
‫Bueno, como una solución muy simplista, lo
‫que podemos hacer es verificar si el ID
‫es mayor que la longitud de la matriz de recorridos,
‫y si es más
‫largo, bueno, entonces podemos enviar un error
‫404 diciendo que no pudimos encontrar cualquier recorrido para la identificación dada.
‫Así que hagamos esa solución muy simple, porque, bueno, esta no
‫es la API real que estamos construyendo en
‫este punto, y en
‫este caso, no es un
‫problema usar una solución demasiado simplista como esa, porque esta
‫no es la cosa real que estamos construyendo aquí.
‫Realmente solo estamos tratando de familiarizarnos
‫con el modo en que Express funciona.
‫Y lo mismo se puede decir aquí, por
‫ejemplo, cuando nosotros ...
‫Entonces aquí abajo, donde publicamos un nuevo recorrido, en
‫el mundo real, siempre, siempre tendríamos que verificar si la entrada
‫del usuario es válida, por lo
‫que si no contiene ningún código malicioso, o realmente,
‫cualquier cosa que no hagamos. no quiero en nuestra envoltura.
‫Y nuevamente, haremos eso, por supuesto, más tarde,
‫pero en este pequeño
‫ejemplo aquí, realmente solo quiero enfocarme en los fundamentos, ¿de acuerdo?
‫Así que implementemos rápidamente lo que acabamos de
‫decir, que es que si el ID es mayor que la longitud del punto de
‫los recorridos, por ejemplo, digamos que tenemos 12 recorridos en nuestra matriz, bueno,
‫si el ID es entonces 13, o 15, o lo que sea,
‫bueno, en ese caso, la identificación no es válida.
‫Entonces, decimos regresar, y eso es porque queremos salir
‫de la función en este punto, ¿de acuerdo?
‫Y por eso decimos volver.
‫Luego enviamos un estado de 404, porque
‫no pudimos encontrar ningún recorrido para esa ID,
‫y luego una respuesta JSON simple
‫con un estado de falla.
‫Entonces, fail es lo que enviamos cada vez que tenemos un código 400.
‫Y luego solo una propiedad de
‫mensaje, ID inválido.
‫Está bien.
‫Así que probemos eso ahora.
‫Entonces tenemos nuestro 23.
‫Y, de hecho, 404 no encontrado, ID inválido.
‫Así que eso es exactamente lo que acabamos de hacer,
‫y parece que está funcionando, ¿de acuerdo?
‫Otra solución que, por
‫supuesto, también podríamos implementar
‫aquí sería simplemente hacer esta
‫prueba después de hacer el recorrido aquí.
‫Entonces obtendríamos la identificación, luego
‫intentaríamos encontrar un recorrido, y si
‫no hubiera recorrido,
‫entonces diríamos que la identificación no es válida.
‫Así que comentemos este, duplicado, solo
‫para que realmente mantengamos ambas soluciones aquí.
‫Y entonces podemos decir, si no hay gira, ¿de acuerdo?
‫Entonces, básicamente, el resultado
‫aquí, si no se encuentra un
‫recorrido, bueno, entonces esta variable es básicamente indefinida,
‫y luego podemos probar eso aquí, así.
‫Entonces, si no hay un recorrido, entonces si el recorrido es
‫básicamente indefinido, bueno, entonces enviamos este mensaje de error.
‫Así que probemos eso también.
‫Y así, de hecho, nos da el mismo resultado.
‫De acuerdo, y
‫así, aprendiste a especificar parámetros
‫en una URL, así, ¿de acuerdo?
‫Luego aprendió a leer estos parámetros
‫desde la URL, usando req dot params.
‫Bueno, y luego usamos ese ID, entonces ese parámetro, para
‫encontrar un recorrido con ese ID exacto.
‫Entonces eso es lo que hicimos aquí, en esta línea, ¿de acuerdo?
‫Así que ese era el objetivo
‫de este video, así que pasemos al siguiente.