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:
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:
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
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:
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.
2. /clients (post): Guarda un cliente.
3. /clients (get/:id): Consulta un cliente.
4. /clients (put:/id): Actualiza un cliente.
5. /clients (delete:/id): Elimina un cliente.
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:
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
"Una forma de apoyar la creación de contenido técnico y de calidad es donando la cantidad que
creas conveniente, si quieres que haga un post sobre un tema en específico no dudes en avisarme"