> Manuales > Manual de NodeJS

Cómo dar los primeros pasos con Express, el popular framework de NodeJS con el que podemos crear aplicaciones web y APIs REST.

En este artículo vamos a explicar cómo comenzar con Express, el framework más usado en NodeJS, que nos facilitará la creación de servidores web en muy pocos minutos, personalizados según nuestras necesidades.

Instalaremos Express y crearemos nuestro primer servidor, configurado para atender ciertas rutas. Aprenderemos a poner en marcha el servidor, de modo que quede escuchando solicitudes de posibles clientes a los que atender.

Por qué Express

Lo cierto es que NodeJS ofrece ya una librería "http" para realizar servidores web. En pocas líneas de código y sin usar ninguna librería adicional puedes crear tu propio servidor de archivos estáticos, como ya pudimos aprender en el artículo práctico sobre el módulo HTTP. Entonces ¿Para qué necesito Express? Básicamente porque con el mismo esfuerzo tendrás mucho más.

Prácticamente usarás la misma cantidad de líneas de código para iniciar Express que para hacer un servidor desde cero, pero te permitirá no solo servir archivos estáticos, sino atender todo tipo de solicitudes complejas que impliquen realizar cualquier tipo de acción, configurar rutas de manera potente, trabajar de detalladamente con las cabeceras del HTTP y las respuestas, etc. Incluso desarrollar tu propio API REST de una manera más o menos sencilla.

En definitiva, Express es un compañero ideal de NodeJS cuando lo que se quiere hacer es una aplicación web. Dentro de Node es la alternativa más usada, por lo que encontrarás cantidad de ayudas y comunidad para resolver tus dudas o necesidades.

Instalar Express

Express se instala vía "npm". Ya debes conocer la operativa para instalar paquetes de Node, así que no habrá muchas sorpresas. Iniciamos nuestro proyecto con:

npm init

Y después de contestar la serie de preguntas instalamos Express mediante el comando:

npm install --save express

Usar Express para crear nuestro primer servidor

Ahora vamos a crear nuestro primer script usando Express, con el código necesario para crear un servidor web. Comenzamos con el "require" del propio Express.

var express = require('express');
Nota: Este código lo puedes poner en tu index.js (o cualquier otro nombre de archivo que quieras usar, con extensión .js) que puedes crear en la raíz de tu proyecto.

A continuación vamos a inicializar una aplicación Express. Para ello vamos a ejecutar la función que obtuvimos al hacer el require del módulo 'express'.

var app = express();

Obtenemos como respuesta una variable, que nosotros hemos llamado "app" (convención usada en la mayoría de las veces), mediante la cual podemos configurar la aplicación haciendo uso del API de Express.

Uno de los muchos métodos que tenemos disponibles es listen(), que nos sirve para poner a nuestro servidor web a la escucha.

app.listen(3001, function() {
  console.log('Servidor funcionando en http://localhost:3001');
});

El método listen recibe el puerto donde el servidor debe comunicarse con el exterior. El resto de los parámetros son opcionales. En este caso estamos enviando tambien una función callback, que se ejecutará cuando el servidor esté listo, escuchando en el puerto indicado.

En principio con esto ya tenemos nuestro servidor listo. De hecho, si ahora ejecutamos nuestro script, desde el terminal con el comando:

node index

Comprobaremos que el servidor se pone a la escucha y nos avisa con el mensaje que contiene la ruta donde enviar las solicitudes http. Sin embargo, todavía no le hemos dicho qué debe responder ante qué solicitudes.

Crear rutas con Express

Ahora vamos a aprender a configurar el comportamiento de Express atendiendo solicitudes en determinadas rutas del servidor. Definimos una ruta usando el método get()

app.get('/', function(req, res) {
  res.send('Hola mundo!! Express!!');
});
Nota: Como puedes imaginar, además de get() existen métodos para definir comportamientos cuando se reciben solicitudes mediante otros verbos del HTTP, como post(), put(), etc.

Como primer parámetro del método get() debemos indicar el patrón de la ruta que queremos recibir. En este caso hemos colocado "/", que equivale a la ruta raíz del servidor. Como segundo parámetro colocamos la función que se ejecutará cuando se reciba una solicitud con tal patrón.

La función encargada de resolver la solicitud recibe dos parámetros que nosotros hemos nombrado "req" y "res" (también por convención). No son más que la "request" de la solicitud HTTP y la "response" que enviaremos al cliente.

Apoyándonos en el método send() del objeto "res" (response) podemos enviar cosas como respuesta. En nuestro primer ejemplo hemos enviado una simple cadena de texto como respuesta, pero podría ser un HTML, un fichero, un JSON, etc. Si ahora ejecutas tu servidor de nuevo, accediendo a la raíz, podrás ver el mensaje "Hola mundo!! Express!!".

Nota: Ten en cuenta que, para que funcione esta nueva ruta, debes detener y reiniciar el servidor. Desde el terminal de comandos debes salir de la ejecución del servidor con CTRL+C y luego reiniciarlo invocando de nuevo al programa con el comando "node index" (o cualquier nombre de archivo que hayas usado para este script).

Existen cientos de formas de aprovechar el sistema de rutas para conseguir cosas diferentes. Por ejemplo, usando parámetros en las rutas tal como sigue:

app.get('/bienvenido/:nombre', function(req, res) {
  res.send('Bienvenido!! ' + req.params.nombre + '!!');
});

En la ruta definida ahora ":nombre" indica que es un parámetro que puede tomar cualquier valor. Estamos configurando la ruta "bienvenido/" seguido de cualquier cadena. Para recibir el valor de la cadena eb ka ruta tendremos disponible en el objeto request.params. El resultado es que una ruta como como http://localhost:3001/bienvenido/miguel, nos contestará con el texto "Bienvenido!! miguel!!

Simple, ¿no?. Quizás lo veas así, pero es muy potente, pues solo hemos visto lo más básico. Existen cientos de configuraciones en Express para satisfacer cualquier necesidad que se te ocurra.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual