0% encontró este documento útil (0 votos)
7 vistas13 páginas

Tutorial - API-MERN - 1a Parte

Cargado por

quinonescharrism
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas13 páginas

Tutorial - API-MERN - 1a Parte

Cargado por

quinonescharrism
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 13

API-MERN

Primero creamos una carpeta para almacenar la estructura del proyecto

La carpeta en este caso es: API-MERN-Oct24

Ahora abrimos la carpeta en Visual Studio Code, abrimos una nueva terminal usando el comando
Ctrl + ñ, y allí digitamos npm init

El proceso solicita algunos datos, diligencie hasta cuando el asistente le muestra el resumen,
entonces digite y, y listo se crea el archivo package.json, con la siguiente configuración:

Ahora instalamos el framework express que nos permite levantar/iniciar un servidor web, para
esto abrimos la terminal y allí digitamos: npm install express,

Y creamos la carpeta src y dentro de ella el archivo index.js, ahora nuestro proyecto luce así:

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Ahora vamos a instalar un nuevo módulo llamado nodemon, el cual permite simular un servidor
activo y nos facilita el trabajo evitando que tengamos que cerrar y abrir el navegador para
actualizar los cambios cada vez que alguno se realice, para esto usamos el comando npm install
nodemon –D, (el –D le indica al servidor que esta dependencia la vamos a usar únicamente en
momentos de desarrollo).

Ahora vamos a escribir el siguiente código en la ventana del archivo index.js:

Y en el archivo package.json se deben realizar las siguientes modificaciones:

El atributo “type”:”module”, para trabajar con import despreciando require

Y el atributo "start": "nodemon src/index.js", para indicarle que ahora se ejecuta sobre nodemon y
que el archivo de arranque está ubicado dentro de la carpeta src y se llama index.js

Entonces ejecutamos el servicio usando el comando npm run start, y la terminal se debería ver asi:

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Ahora vamos a comprobar que el servidor funciona correctamente en un navegador, para esto
añadimos la ruta base de nuestra API WEB, ahora el index.js luce así:

Y ahora podemos probar el funcionamiento del servidor desde un navegador digitando


localhost:9000 en la barra de direcciones y obtendremos el siguiente renderizado:

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Conectandose a la Base de datos MONGO

Para este propósito lo que vamos a hacer será instalar el paquete mongoose, y para esto usaremos
el comando npm i mongoose en la consola/terminal:

Instalado el paquete lo vamos a usar en el index.js y debemos entonces importarlo agregando en


la cabecera del archivo la siguiente línea:

import mongoose from "mongoose";

Para conectarse a la BdD debemos usar el método connect de mongoose, y este recibe como
parámetro la cadena de conexión para la BdD, está la podemos obtener en el servidor de mongo
Atlas en el botón connect, la siguiente es un ejemplo de la cadena obtenida:

mongodb+srv://usuario:[email protected]/?
retryWrites=true&w=majority

Pero esta cadena es la llave para ingresar y gestionar la bdd, es lógico que no queremos que
usuarios no autorizados ingresen hasta allí, para dar un nivel de seguridad a nuestra BdD vamos a
ocultar esta cadena dentro de un archivo con extensión .env, al cual los usuarios normales no van
a tener acceso directo.

Para esto debemos:

1 - Instalar el módulo dotenv usando el comando npm i dotenv de npm

2 – Crear en la raíz del proyecto el archivo con nombre .env, y allí dentro vamos a crear la
constante de ambiente así:

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
MONGODB_URI =
mongodb+srv://usuario:[email protected]/?
retryWrites=true&w=majority

3 – entonces importamos la nueva dependencia y la ejecutamos desde el package.json, esto


entonces me permite hacer uso de las variables de ambiente definidas por mí:

Ahora vamos a configurar la conexión, usando el método connect de mongoose, mencionado


anteriormente, así:

Pero este método puede retornar respuestas tanto positivas como errores, en todo caso vamos a
administrarlas usando promesas de js, (promises), y nuestro método connect ahora queda
configurado así:

Ahora vamos comprobar la conexión, si todo salió bien se verá una pantalla similar a esta:

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Creando los endpoints para el CRUD de las tablas en MONGO

Las rutas de la tarea a realizar se van a definir en el archivo de rutas users.js,

para poder usarlas debemos importarlas en el index.js, y además de aquí en adelante queremos
anteponer el prefijo “/api” a cada uno de los endpoints, para esto agregaremos un middleware
que hará que la URI del endpoint se vea así /api/users, ó /api/products, etc (línea No 13). En el
código esto se verá así:

Ahora para probar este código deberíamos usar un cliente REST (como postman), nosotros para
hacer estas pruebas usaremos la extensión REST Client que nos permite probar los endpoints,
entonces la agregamos (vamos a la opción del lado izquierdo de la pantalla, una vez allí
buscaremos la extensión REST Client y la instalaremos), y creamos el archivo request.http en la raíz
del proyecto, en este momento mi proyecto luce así:

En el centro de la pantalla se puede apreciar el código digitado dentro del archivo de pruebas
request.http, para iniciar la prueba se da click en el enlace que muestra Send Request en la parte
superior del llamado del método POST, entonces se genera la petición y al lado derecho de la
pantalla se ve la respuesta, que en este caso fue exitosa (HTTP/1.1 200 OK), y nos muestra el
mensaje programado en este endpoint.

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Creando el modelo de los tipos de datos de la aplicación

Como estamos usando mongoose para conectarnos a la BdD, tenemos que crear un modelo de
datos (schema) para cada tipo de datos que tengamos, con ellos entonces vamos a gestionar los
procesos de inserción, consulta, borrado y actualización en la BdD desde la API. El eschema de los
usuarios (userSchema) del proyecto se verá así:

Endpoint para crear los usuarios

Teniendo este schema, vamos a usarlo para el endpoint de crear usuario, entonces debemos:

1- Importar el schema en el archivo de las rutas del usuario


2- Con el agregado vamos a recibir los datos que vienen del body de la petición
3- Y creamos el objeto invocando el método save() de mongoose,
4- Ahora debemos manejar los aciertos (then) y errores (catch), y lo haremos usando las
promesas.

El archivo de rutas de los usuarios ahora luce así:

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Para interpretar el retorno de la inserción, que hemos definido como un objeto JSON, debemos
convertirlo a un objeto javascript, para esto usamos un nuevo middleware dentro del index.js, y
justo antes de usar el middleware de las rutas del usuario, así:

En este punto probamos el endpoint de crear usuario nuevamente usando el request.http, y nos
muestra como respuesta (al lado derecho de la imagen) el objeto que se creó en la BdD, y el
número de respuesta 200, lo que significa que todo salió bien.

Y si vemos la bd, al consultar los documentos encontramos el nuevo documento (registro)

Endpoint para obtener los usuarios

Para obtener todos los documentos de la colección de usuarios, vamos a implementar el método
find que viene del objeto userSchema, el código a implementar dentro de la ruta de nuestros
usuarios se verá así:
import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/
¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Y para comprobar la nueva funcionalidad implementada, crearemos un nuevo llamado al endpoint
con el método GET desde el archivo de pruebas request.http, así:

Del lado derecho se ve el código implementado para probar el endpoint de users con el método
GET, y al lado izquierdo el resultado de la prueba, donde se ven los documentos que existen en
este momento en la colección users dentro de MONGODB

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Endpoint para consultar los datos de un usuario especifico

Para alcanzar esta tarea vamos añadir un nuevo endpoint dentro del archivo users.js en la carpeta
routes, el método implementado tomará un parámetro como parte del endpoint y con este se
hará uso del método findById del schema para ubicar el documento solicitado, el método se verá
así:

Ahora agregaremos un llamado al enpoint dentro del archivo de pruebas de REST Client, en este
momento el archivo se verá así:

Y al probar pasándole el id de alguno de los documentos registrados retornará los datos de este

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Endpoint para actualizar los datos de un usuario especifico

La actualización de los datos de un usuario necesita la creación de un nuevo endpoint, que en este
caso va a necesitar el id del usuario a consultar (línea 37), y para completar los requisitos los datos
del usuario que van a ser actualizados (línea 38), en esta tarea usaremos el método updateOne al
que se le pasa como parámetros el id y los datos obtenidos del body, en la siguiente figura de
muestra el código de este método en el archivo users.js de la carpeta routes.

Y para la prueba se crea el llamado al endpoint usando el método PUT, y claro enviando los datos
que se van a actualizar y para identificar el usuario se envía el id del usuario.

Esta es la vista del momento de la prueba, el resultado anuncia que se ha modificado 1 documento
con el cual hubo coincidencia en la colección

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Endpoint para borrar los datos de un usuario especifico

Este es el método que se construyó para realizar el borrado de un documento de la colección de


usuarios, en esta ocasión recibimos por parámetros el id del usuario y con el vamos a realizar la
eliminación usando el método deleteOne, (también podríamos usar el método remove de
MONGO:

Para realizar las pruebas de este método se agrega un llamado al endpoint dentro del
request.http, enviándole el id del elemento a eliminar

Antes de hacer la eliminación el contenido total de la colección es:

Esto es lo que se puede ver al momento de realizar la eliminación:

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/
Y ahora la colección se ve asi:

import y require en JavaScript: Diferencias [Guía 2024] | KeepCoding https://keepcoding.io/blog/import-y-require-en-javascript/


¿Qué es nodemon en Node.js? - Geek Nómada (geeknomada.blog) https://geeknomada.blog/nodejs/que-es-nodemon-en-node-js/

También podría gustarte