API en Node.js: Express.js y MongoDB

Javascript nos permite también escribir código del lado del server.

Node.js es un entorno de ejecución para JavaScript construido con el motor V8 de Chrome. Sobre Node.js podemos crear APIS de forma fácil a través de librerías o frameworks, en este caso vamos a tocar Express.js
Node.js tiene particularidades en cuanto a su comportamiento, antes de empezar a desarrollar es mejor entender cómo funciona su core y el event loop, puedes ir a una articulo que he publicado hace unos meses para ir entendiendo sobre este tema dando CLICK AQUÍ
Teniendo en cuenta las cosas que debemos evitar para bloquear el event loop y el concepto de procesos asíncronos podemos empezar:
Instalamos Node.js: en nuestra máquina y luego ejecutar en consola el siguiente comando: npm init
Con npm init: creamos el package.json e integramos los siguientes paquetes:
codigo
Body-Parser: Nos permite manipular las respuestas del API en formato json.
Cors: Nos permite acceder al API vía cliente (a través del navegador) ya sea con axios (usado en su mayoría con React o Vue), HttpClient (de Angular) o incluso Ajax y JQuery.
Express: Es el framework que vamos a usar.
Mongoose: Es una librería que nos permite conectarnos y manipular consultas e interacción con Mongodb.
Luego de esto creamos nuestro archivo inicial para configurar nuestro proyecto y servidor:
codigo
Aquí existen dos puntos a destacar, la llamada a la configuración con mongodb /src/database y a las rutas con ./routes/clients. Vamos a explicar cada uno:
Database.js: Nos permite conectarnos con MongoDB
codigo
Router.js: Nos permite crear los endpoints y en este caso los procesos que cada uno va ejecutar. Cabe destacar que como vamos a necesitar tocar la base de datos es necesario llamar al modelo de datos que corresponde, en este caso el API va interactuar con un modelo clients. Veamos primero el modelo Client:
codigo
De esta forma definimos un Schema con mongoose y configuramos cada campo en cuanto a su tipo y validación, además de exportar el módulo para ser usado en otro sitio. Ahora si, veamos nuestras rutas y cada proceso.
ENDPOINTS 1. /clients (get): Consulta a la db todos los clientes registrados.
codigo
2. /clients (post): Guarda un cliente.
codigo
3. /clients (get/:id): Consulta un cliente.
codigo
4. /clients (put:/id): Actualiza un cliente.
codigo
5. /clients (delete:/id): Elimina un cliente.
codigo
Luego de ver cada endpoint debo explicar un par de cosas:
1. Siempre en los procesos debemos manejar un try catch para poder manipular los errores de forma correcta (si existen otras formas y me lo comentas seria genial)
2. Todos los procesos que interactúan con una base de datos son procesos asíncronos (porque node.js los tiene que delegar y eso es directamente proporcional a que tiene que esperar por la respuesta) por lo tanto debemos implementarlo a través de funciones que no bloqueen el event loop. En este caso estoy usando async await, declarando async al crear la función y await para obtener la respuesta de dicha interacción.
Listo! ahora ejecutamos node index.js en la consola para levantar el servidor y con Postman podemos verificar el funcionamiento de cada endpoint:
codigo
codigo
codigo
codigo
codigo
Con este conocimiento ya tenemos lo elemental para desarrollar en Node.js con Express.js (en este caso) pero entender cómo funciona node nos va ayudar a usar cualquier herramienta que tenga relación. El proyecto lo pueden bajar AQUÍ
Saludos!
#API
#Javascript
#Nodejs
#Expressjs
#MongoDB
Comentarios: Pronto!