Rutas en Node.js
Durante el desarrollo de una aplicación web robusta, es natural que en algún momento existan tantas funcionalidades que sin una buena organización todo será dominado por el caos. Imagina que tienes diez direcciones y que cada una de ellas tiene métodos POST, GET, PUT y DELETE. En total, serán cuarenta métodos organizados secuencialmente (uno debajo de otro) en un solo documento, haciendo todo largo, extenso y difícil de localizar nada.
Con eso en mente, este artículo presenta una excelente manera de usar Node.js de manera organizada y bien estructurada a través de la función Router.
¿Qué es Node.js?
Node es un intérprete del lenguaje JavaScript, creado a partir de otro llamado V8. A lo largo de los años, se ha vuelto cada vez más utilizado porque admite JavaScript tanto del lado del cliente como del lado del servidor, además de ser fácil de entender. Hoy en día, es utilizado por varias empresas como Paypal, Amazon y Netflix.
Durante el desarrollo de este artículo, utilizaremos el sistema de módulos CommonJs, pero no se limite a esta forma de exportar e importar módulos, ya que desde la versión 14 Node comenzó a ofrecer soporte para ECMAScript 6.
Instalación de Node
Es importante resaltar que Node debe estar instalado en tu computadora para que puedas desarrollar con la herramienta. Si tu sistema operativo es Mac o Windows, navega hasta la dirección, descarga la versión LTS (la más actual y estable de Node.js) e instálala ejecutando el archivo descargado. Si usas alguna versión de Linux, escribe las siguientes líneas de comando en su terminal:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install lts/*
Si la instalación de Node se completó correctamente para alguno de los casos mencionados, cuando ejecutemos el siguiente comando recibiremos la versión instalada de Node como información en nuestra terminal:
node --version
Primeros passos
Comencemos nuestro proyecto generando un directorio donde crearemos el archivo package.json e instalaremos Express (framework para organizar solicitudes y respuestas) y Nodemon (framework que evita la necesidad de reiniciar el servidor cada vez que hacemos algún cambio en los archivos de el proyecto).
Para hacer esto, simplemente ejecute los siguientes comandos en una terminal iniciada en la carpeta raíz del proyecto:
npm init -y
npm install express
npm install nodemon
También crearemos una carpeta src y un archivo server.js dentro de ella: en este archivo tendremos la estructura principal de nuestro servidor. Además, haremos algunos cambios en el archivo package.json.
Además de crear una descripción para el proyecto en el campo de descripción, indicaremos en el campo principal que nuestro archivo principal se encuentra en la carpeta src y se llama server.js. Finalmente, crearemos un script dev que usará nodemon para ejecutar el archivo server.js que creamos:
Como ya se mencionó, en el archivo server.js crearemos la estructura básica para ejecutar un servidor Node: importaremos y ejecutaremos Express, usaremos la función listen para vincular nuestra aplicación a un puerto y crearemos un método get para probar si nuestro servidor está funcionando correctamente.
Si todo va bien, al ejecutar el comando npm run dev en un terminal abierto en la carpeta raíz del proyecto, se mostrará un JSON con el formato {"message":"Hello World"} en la dirección http://localhost:3333 de tu navegador. Además, tendremos la siguiente configuración en la terminal donde ejecutamos el script:
Una vez completados todos estos pasos, ¡comencemos con nuestra implementación utilizando el concepto de rutas para Node.js!
Creando rutas para la aplicación
Imagina que tenemos que crear una aplicación en la que el usuario pueda tener varias funcionalidades, algunas de las cuales verificar y cambiar usuarios registrados y actualizar su propia información. Si vamos a utilizar el modelo CRUD para cada una de estas funcionalidades (Create, Read, Update e Delete), tendremos ocho métodos siendo creados en el archivo server.js (para cada una de estas funcionalidades tendremos los verbos GET, POST, PUT y DELETE).
¿Qué tal si creamos una ruta para cada una de estas características mencionadas? Además de dividir cada implementación por archivo, también evitamos acumular funciones en un solo lugar, haciendo que el código sea más limpio y fácil de entender. Lo primero es crear una carpeta específica para poner las rutas y, dentro de esa carpeta, crear los archivos users.js y profile.js.
Una vez que se crean estos archivos, los importaremos y ejecutaremos Express en ellos tal como lo hicimos en el archivo server.js, con un ligero cambio: en lugar de ejecutar la función express, ejecutaremos la función express.Router, que tiene todas las funcionalidades necesaria para usar rutas con Node.js. No olvides exportar la función en cada ruta usando module.exports:
Ahora es el momento de informar a nuestro archivo server.js principal que tenemos rutas que se utilizarán en nuestra aplicación. Para ello debemos importar cada una de las rutas en server.js y utilizar la función use para cada una de ellas.
Esta función recibe como parámetro la dirección y la ruta que utilizaremos:
A partir de ahora, podemos crear todos los métodos necesarios para cada una de las rutas en sus respectivos archivos creados, sin miedo a que no funcionen:
Ten en cuenta que para cada uno de los métodos no fue necesario repetir la dirección /users que asignamos a esta ruta en el archivo principal server.js. Esto sucede porque cuando importamos e implementamos una ruta en el archivo principal (como en la sección app.use('/users', users) en la línea 13 del archivo server.js), todas las direcciones que se crean dentro del archivo reconocerán la dirección raíz (' / ') como se especifica allí (/users). Increíble, ¿verdad?
Consideraciones finales
En este artículo hemos visto toda la estructura necesaria para la implementación de rutas dentro de Node.js. Ahora puedes crear proyectos robustos y debidamente organizados, con rutas bien estructuradas y archivos que solo tengan información que compita con cierta funcionalidad de la aplicación.
¡Lo mejor para ti en tus proyectos!
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.