‫Jonas: Bienvenido de nuevo, ahora ha llegado
‫el momento de finalmente comenzar a construir nuestra API.
‫Así que esta conferencia realmente será el
‫primer paso en un largo viaje para construir este proyecto principal.
‫Y permítanme comenzar mostrándoles nuevamente el proyecto
‫del que estamos hablando.
‫Así que este es el proyecto Natours.
‫Básicamente es una
‫aplicación donde podemos ver tours y también reservarlos.
‫Podemos crear cuentas de usuario, podemos iniciar sesión y
‫realmente hacer todo tipo de cosas diferentes.
‫Entonces, por ejemplo, podemos echar un vistazo al recorrido aquí.
‫Tiene todos estos detalles, este mapa, tiene
‫reseñas de otros usuarios que están usando la plataforma, e incluso podemos reservar
‫el tour en ese momento.
‫Tendríamos que iniciar sesión antes de poder reservar
‫y no lo
‫haré ahora porque es solo una demostración muy
‫simple aquí, así que solo quería mostrarles esta
‫interfaz gráfica, básicamente, del proyecto que estamos construyendo. .
‫Ahora bien, esta parte que está viendo
‫aquí es en realidad la parte que vamos
‫a construir al
‫final del curso, porque esta primera
‫parte del curso es construir una API usando exactamente los
‫mismos datos que ve aquí en esta dinámica. sitio web.
‫Entonces, nuevamente, comenzamos por
‫construir la API y luego el sitio web renderizado dinámicamente, y
‫elijo hacerlo así porque
‫de esta manera, no tenemos
‫que mezclar todo este contenido diferente todos juntos,
‫por lo que para aprender Express y Mongodb y Mongoose, me
‫resulta mucho más fácil trabajar con datos y
‫no preocuparme por las cosas gráficas, aunque eso
‫es quizás un poco más emocionante porque
‫puedes ver los resultados reales en esta
‫hermosa interfaz.
‫Pero para aprender, es mejor nuevamente, simplemente lidiar
‫con los datos en sí
‫y preocuparse por hacerlos hermosos más adelante.
‫Bien, déjame mostrarte la API también.
‫Y para eso, por supuesto, utilizo Postman.
‫Crea una nueva pestaña aquí.
‫Y así, accedimos a la API final en la
‫API de barra, la versión uno de barra y, por
‫ejemplo, podemos echar un vistazo a los recorridos.
‫Entonces usamos la solicitud
‫de obtención y luego obtenemos todos estos recorridos diferentes.
‫Bien, de nuevo, exactamente los mismos
‫recorridos que viste en la
‫interfaz gráfica, en el sitio web renderizado antes.
‫De acuerdo, también podemos seguir adelante, tomar la identificación y solicitar solo
‫esa identificación, así que en ese recorrido para esa identificación, y para ver que ahora
‫solo tenemos este aquí con incluso más datos de
‫los que teníamos antes.
‫Entonces tenemos ubicaciones de
‫inicio aquí, tenemos guías turísticos que a su vez tienen
‫otras identificaciones, tenemos ubicaciones, tenemos reseñas, así que todo
‫eso lo tenemos en un recorrido.
‫Verá, es algo realmente avanzado
‫y, en realidad, tenemos más que solo giras.
‫Tenemos usuarios pero no podremos acceder a
‫ellos porque necesitamos estar autenticados.
‫Por lo tanto, no ha iniciado sesión y, en este
‫momento, deberíamos iniciar sesión en nuestra aplicación.
‫Ahora, en este punto, voy a dejar
‫de mostrarles todas las características porque lo
‫construiremos a lo
‫largo del curso, solo para mostrarles que realmente están sucediendo muchas cosas
‫aquí y, por lo tanto, hay mucho material y cosas que
‫aprender. por delante de ti, así que
‫espero que estés emocionado por
‫eso y que quieras dar el primer paso conmigo ahora mismo.
‫Así que retrocedamos e implementemos la ruta de los recorridos
‫o empecemos a implementarla, al menos.
‫Bien, este fragmento de código aquí, ya no lo necesitamos,
‫y no lo borraré, solo lo comentaré.
‫Entonces, nuevamente, usamos app. get porque
‫en esta lección,
‫comenzaremos simplemente manejando las
‫solicitudes de obtención y la URL será barra API y recorridos.
‫Entonces no estoy usando
‫v1, bueno, podría usar v1 de inmediato, por
‫lo que es una buena práctica especificar la versión de API.
‫De acuerdo, en caso de que
‫desee hacer algunos cambios
‫en su API, puede hacerlo, pero simplemente en v2
‫sin romper a todos los que todavía están usando v1.
‫Bien, básicamente, puede ramificarse, crear una nueva
‫versión de su API,
‫pero todos los usuarios pueden seguir usándola.
‫Si lo hiciéramos
‫así y luego hiciste cambios en los recorridos de barra
‫de API, entonces los usuarios
‫que comenzaron a usarlo antes de que hicieras el cambio tendrían algún problema.
‫De acuerdo, siempre debemos especificar la versión de la API.
‫También podríamos hacerlo en
‫el subdominio, pero es más fácil simplemente incluirlo en la URL.
‫Bien, y luego, por supuesto, nuestro controlador de ruta.
‫Así es como solemos llamar a esta función.
‫Lo llamamos el controlador de ruta.
‫Bien, para familiarizarse con estos términos Express.
‫Ahora, ¿qué queremos hacer cuando alguien toma esta ruta?
‫Bueno, simplemente queremos enviar todos los recorridos.
‫Así que eso es similar a lo que acabamos
‫de aprender en la última conferencia, ¿no?
‫Tenemos esta URL o este punto final, recorridos de
‫barra, y eso generalmente devolverá todos los datos
‫para ese recurso, ¿verdad?
‫Entonces, también los tours son el recurso ahora, y estoy
‫comenzando con los
‫tours aquí porque es, diría, el más
‫obvio, ya que estamos construyendo un sitio web o una
‫aplicación web para vender tours, ¿verdad?
‫Ahora, ¿de dónde obtenemos
‫estos recorridos que queremos enviar al cliente?
‫Bueno, está aquí en la
‫carpeta dev-data, luego data y luego tours-simple.
‫Entonces, es este archivo JSON, y es muy
‫similar al que teníamos para la granja
‫de notas, así que nuevamente, es una matriz de objetos JSON que
‫luego tiene un montón de datos sobre cada uno de los recorridos.
‫Y sí,
‫esos son los datos que enviaremos al cliente.
‫Ahora, antes de que
‫podamos enviar los datos, en realidad necesitamos
‫leerlos primero y, de nuevo, no lo hacemos dentro del controlador
‫de ruta, pero lo hacemos antes.
‫De acuerdo, y tal como expliqué en el proyecto anterior,
‫podemos hacerlo porque el código de
‫nivel superior solo se ejecuta una vez, que es
‫justo después del inicio de la aplicación, correcto.
‫Y ahora que sabe todo sobre el
‫ciclo de eventos, tiene aún más sentido para usted en este punto, ¿verdad?
‫Entonces, solo esta función de devolución de llamada, por ejemplo aquí,
‫se ejecutará dentro del bucle de eventos
‫y, por lo tanto, aquí, no podemos tener ningún bloque ni código.
‫Pero afuera, no hay ningún problema.
‫Entonces, eso simplemente lee los recorridos en una variable
‫fuera de todo esto de manera sincrónica.
‫Entonces fs, y para eso, por
‫supuesto, necesitamos requerir el módulo en realidad, y
‫lo hacemos aquí en la parte superior.
‫Y me gusta comenzar siempre con los módulos principales,
‫así que lo hago en el primero.
‫Entonces require, fs, entonces
‫fs. readFileSync, ya está aquí.
‫Y ahora, usemos el nombre de directorio.
‫Y nuevamente, en
‫este punto, ya sabe por
‫qué tenemos acceso a esta variable aquí, por lo que dirname es la carpeta
‫donde se encuentra el script actual,
‫y esa es esta carpeta principal.
‫Entonces, a partir de aquí, debemos pasar a
‫dev-data, luego a datos, y luego
‫allí, tenemos recorridos simples. json.
‫Bien, y ahora también, en este paso aquí, analicemos
‫el resultado de esto.
‫Entonces JSON, en realidad la mayúscula,
‫entonces JSON. analizar, de modo que el
‫JSON que tenemos aquí se convierta automáticamente en un objeto
‫Javascript o una matriz de objetos Javascript, en realidad.
‫Así que guardarlo y esto lo reformateará y ahora todo lo que
‫tenemos que hacer
‫es realmente enviarlo de vuelta al cliente, así
‫que res. json,
‫y déjeme especificar el código de estado aquí,
‫incluso si 200 es el
‫estándar, me gusta hacerlo en todas y cada una de las respuestas.
‫Muy bien, JSON, ¿y qué queremos enviar ahora?
‫No mensaje, eso es seguro.
‫Entonces, ¿qué queremos enviar de vuelta?
‫Bueno, recuerde que íbamos
‫a utilizar el estándar de formato Jsend JSON.
‫De acuerdo, y ahí dentro, especificamos un estado, y
‫luego el estado, y eso
‫puede ser éxito, fracaso o error, de acuerdo.
‫Entonces el éxito es obvio.
‫Es cuando tenemos un código 200 o 201
‫o, en realidad, cualquier código que comience con 200.
‫Luego tenemos el error, que es un error en el cliente,
‫y luego también tenemos el
‫error, cuando hubo un error en el servidor.
‫Está bien, pero los usaremos un poco más tarde.
‫De todos modos, también tenemos la propiedad de datos que
‫es, como mencioné,
‫el llamado sobre para nuestros datos.
‫Entonces especificamos la propiedad de
‫los datos y esos datos, a su vez, tendrán un objeto que
‫luego contiene los datos, por lo que
‫el paso de respuesta que realmente queremos enviar.
‫Y en este caso, son giras.
‫Entonces recorridos y luego recorridos, que es el
‫mismo nombre en este caso.
‫Entonces, con ES6, en realidad no necesitamos especificar la
‫clave y el valor si tienen el mismo
‫nombre, por lo que podríamos
‫escribir recorridos, pero solo quería
‫especificar aquí que escribí recorridos aquí porque,
‫bueno, ese es el nombre del recurso y del punto
‫final, y por eso,
‫dentro de los datos, envío un objeto que tiene la propiedad tour.
‫Bien, entonces si esto se llamara x, por
‫ejemplo, entonces llamaría a
‫este aquí x, pero aquí, todavía necesitaría decir tours, está bien.
‫Lo estoy devolviendo a los recorridos porque tiene más sentido
‫y ahora puedo eliminar esto aquí y dejarlo así.
‫Y eso es todo lo que tenemos que hacer.
‫Así que leemos nuestros datos y luego formateamos nuestra respuesta
‫de esta manera aquí, usando la especificación de datos de JSend.
‫Bien, cosas muy simples.
‫Probemos ahora y ahora tenemos
‫que cambiar, por supuesto, la URL, por lo
‫que tenemos la API de barra, la versión uno de barra y recorridos.
‫Entonces esa es nuestra URL.
‫Todavía hacemos una solicitud de
‫obtención, y esa es la que estamos respondiendo en
‫el código, así que recuerde, use este
‫método de obtención y presione Enviar, y de hecho, aquí vamos.
‫Así que aquí tenemos todos nuestros tours.
‫Entonces, increíble, eso es realmente genial.
‫Realmente, muy buen trabajo.
‫Ahora, para terminar, otra cosa que
‫me gusta hacer normalmente cuando enviamos varias respuestas es
‫incluir un campo llamado resultados
‫con la cantidad de resultados que estamos enviando.
‫De acuerdo, y esto no es
‫realmente parte de la especificación
‫de JSend, pero aún así me
‫gusta hacerlo porque eso hace que sea
‫muy fácil para el cliente obtener información
‫muy rápida sobre los datos que está recibiendo.
‫Entonces sabemos que los tours son una variedad y, por lo tanto,
‫todo lo que tenemos que hacer es decir tours. largo.
‫De acuerdo, y esto en realidad
‫solo tiene sentido cuando enviamos una matriz, por lo que varios objetos.
‫Si solo estuviéramos enviando un recorrido, entonces no
‫tendría sentido tener resultados como uno, correcto,
‫por lo que
‫solo hago esto cada vez que enviamos una
‫matriz con varios objetos allí.
‫Así que hagámoslo de nuevo.
‫Y de hecho, tenemos nueve resultados, luego
‫tenemos la propiedad de datos, luego allí, recorridos, para
‫especificar que estamos enviando
‫recorridos, y luego una matriz con los nueve recorridos allí.
‫Para que pueda ver otro objeto
‫y otro y otro,
‫y hasta el
‫final, ese es el primer paso para nuestra API.
‫Por supuesto, en este punto, es como una API basada en archivos, así que estamos leyendo
‫estos datos de una API, pero luego,
‫por supuesto, almacenaremos estos datos en
‫una base de datos y luego los leeremos desde allí.
‫Pero de todos modos, esto ya parece un poco real
‫y seguro que me hace sentir muy bien,
‫y espero que te haga sentir bien a ti también.
‫Eso es todo para la solicitud de obtención.
‫A continuación, nos ocuparemos de la solicitud de publicación
‫para que podamos agregar un nuevo recorrido a nuestros datos.