Primeros pasos con Express, unos de los frameworks de NodeJS más utilizados
Aunque hay muchos frameworks de NodeJS, seguramente Express sea el más conocido, ya que nos permite crear aplicaciones web de una manera cómoda, rápida y personalizada. En este artículo, repasamos sus principales características y explicamos cómo instalarlo.
Aunque NodeJS tenga una librería HTTP que, con el uso de poco código y sin necesidad de echar mano de recursos adicionales, con Express podremos obtener mejores resultados empleando también pocos recursos. Además de servidores de archivos estáticos utilizando también poco código, con Express podremos atender cualquier tipo de solicitudes complejas que requieran realizar acciones, trabajar al detalle con las cabeceras del HTTP, configurar rutas e incluso podremos desarrollar de modo simple nuestro API REST.
Todas estas bondades convierten a Express en el framework idóneo para realizar aplicaciones web, contando además con una amplia comunidad y manuales que apoyarán cualquier proyecto con Express.
Instalación y primeros pasos con Express
Comenzaremos instalando Express vía npm, como se hace con los paquetes de Node, comenzando el proyecto con:
npm init
Una vez respondidas las correspondientes preguntas, instalaremos Express echando mano del siguiente comando:
npm install --save Express
Creación del servidor
Una vez instalado Express, podemos comenzar a crear el primer script, utilizando el require:
var express = require('express');
Este código se puede incluir en el index.js que se puede crear en la raíz del proyecto
El siguiente paso será inicializar una aplicación Express, ejecutando la función que hemos obtenido al realizar el require del módulo express:
var app = express();
Al realizar este paso, nos dará como resultado una variable gracias a la cual podemos configurar la aplicación utilizando el API de Express. A esta variable la hemos llamado app, ya que es el término que más se utiliza en estos casos.
Si queremos poner nuestro servidor a la escucha, podemos hacer uso de listen():
app.listen(3001, function() { console.log('Servidor funcionando en https://localhost:3001'); });
Este método indica el puerto donde el servidor se comunicará con el exterior, siendo los demás parámetros opcionales (en este ejemplo además se envía una función callback, que se ejecutará escuchando en el puerto indicado cuando el servidor esté listo).
Siguiendo estos pasos ya estaría listo el servidor. Para comprobar que todo está correcto, podemos ejecutar desde el terminal nuestro script con este comando:
node index
Esto hará que el servidor se ponga a la escucha, indicando que contiene la ruta donde enviar las solicitudes http. Ahora quedaría pendiente indicarle qué debe responder ante determinadas solicitudes.
Cómo crear rutas con Express
Para configurar el comportamiento de Express a la hora de atender solicitudes en determinadas rutas del servidor, primeramente tendremos que definir la ruta utilizando el método get(), aunque también existen otros métodos para definir estos comportamientos, como put(), post (), etc.
app.get('/', function(req, res) { res.send(‘Buenos días’); });
Sobre este ejemplo, vemos que como primer parámetro del get() hemos de indicar el patrón de la ruta a recibir, donde ‘/’ equivaldría a la ruta raíz del servidor. El segundo parámetro que tenemos es la función que se ejecutará cuando se reciba la solicitud con dicho patrón.
Si observamos el código veremos que hay dos parámetros req (request de la solicitud HTTP) y res (response que enviamos al cliente), los cuales recibirá la función encargada de resolver la solicitud.
Gracias al método send() del objeto response, podemos enviar una respuesta, ya sea en formato texto, como en fichero, HTML, JSON, etc. Si detenemos y reiniciamos el servidor y lo ejecutamos de nuevo, veremos el mensaje que pusimos anteriormente “Buenos días”.
A partir de esto, hay que tener en cuenta que este sistema de rutas se puede aprovechar de infinitas maneras para lograr diferentes propósitos. He aquí ejemplo de esto:
app.get('/hola/:nombre', function(req, res) { res.send(‘Hola+ req.params.nombre + '!!'); });
Aquí la ruta :nombre nos indica que se trata de un parámetro que puede tomar cualquier valor; de este modo estamos configurando la ruta hola/ para que pueda ir seguida de la cadena que queramos.
Si queremos recibir el valor de la cadena en la ruta podemos hacerlo mediante el objeto request.params. Por ejemplo, para la ruta https://localhost:3001/hola/Arsys, la respuesta que obtendríamos sería hola Arsys.
Aunque éste sólo se un sencillo ejemplo de lo que podemos conseguir con Express, no nos engañemos: es muy potente y puede cubrir muchas necesidades a través de los miles de configuraciones posibles a la hora de crear una web profesional.