como-usar-expressjs-con-nodejs

Cómo usar Express.js con Node.js

Express.js es un framework de desarrollo web que simplifica la creación de aplicaciones web y APIs en Node.js. Sin duda, es el framework más popular y empleado para la creación de servidores web.

Express.js ofrece una serie de características como enrutamiento, middleware, gestión de peticiones y respuestas HTTP. Además, es un framework estable, comprobado y ampliamente utilizado.

No obstante es un framework que lleva bastante tiempo con nosotros. Por tanto, han surgido numerosas alternativas, incluso la propia librería nativa node:http, que ha mejorado mucho con el tiempo.

Sin embargo, sigue siendo una de las mejores alternativas y más utilizadas. Dispone de una gran comunidad, y documentación disponible. Por lo cuál es interesante que, al menos, lo conozcáis y sepáis usarlo.

Cómo usar Express.js

Instalación de Express.js

Para comenzar, necesitamos instalar Express.js en nuestro proyecto. Podemos hacerlo usando npm (Node Package Manager) con el siguiente comando en la terminal:

npm install express

Una vez instalado, podemos importar Express.js en nuestro código para comenzar a crear nuestro servidor web.

const express = require('express');
const app = express();
const PORT = 3000; // Puerto en el que escuchará el servidor

// aquí definiríamos las rutas
// ver más abajo

// Iniciar el servidor
app.listen(PORT, () => {
  console.log(`Servidor Express escuchando en el puerto ${PORT}`);
});

Así de fácil podemos hacer un servidor web con Express.js

Creación de rutas con Express.js

Una de las características más destacadas de Express.js es su sistema de enrutamiento. Permite definir rutas para manejar diferentes tipos de solicitudes HTTP, como GET, POST, PUT y DELETE. A continuación, veremos cómo crear y manejar rutas en Express.js.

Para definir una ruta en Express.js, utilizamos los métodos de enrutamiento como app.get(), app.post(), app.put(), app.delete(). Estos métodos toman como primer argumento la URL de la ruta y una función de controlador que se ejecutará cuando se haga una solicitud a esa ruta.

Ejemplo de Ruta GET

app.get('/', (req, res) => {
  res.send('¡Hola, mundo desde Express.js!');
});

En este ejemplo, estamos definiendo una ruta GET en la ruta raíz ('/') que responde con el mensaje “¡Hola, mundo desde Express.js!“.

Ejemplo de Ruta POST

app.post('/usuarios', (req, res) => {
  res.send('Información de usuario recibida y procesada');
});

En esta ruta POST, respondemos con un mensaje indicando que la información del usuario ha sido recibida y procesada.

Ejemplo de Ruta Dinámica

En esta ruta dinámica, capturamos cualquier valor después de /usuarios/ utilizando req.params. Luego respondemos con el ID del usuario solicitado.

app.get('/usuarios/:id', (req, res) => {
  const { id } = req.params;
  res.send(`Solicitado usuario con ID: ${id}`);
});

Middleware en Express.js

Express.js también ofrece middleware, funciones que se ejecutan antes de llegar a la ruta final. Esto nos permite realizar acciones como validar datos, manejar errores o autenticar usuarios antes de llegar al controlador de ruta.

Ejemplo de Middleware de Registro de Solicitudes

En este ejemplo, cada vez que llega una solicitud al servidor, registramos la URL de la solicitud en la consola antes de continuar con la siguiente función en la cadena de middleware.

app.use((req, res, next) => {
  console.log(`Solicitud recibida en: ${req.url}`);
  next();
});

Ejemplo de Middleware de Manejo de Errores

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Algo salió mal');
});

Aquí tenemos un middleware de manejo de errores que captura cualquier error que ocurra durante el procesamiento de una solicitud y envía una respuesta de error 500 junto con un mensaje de error genérico.

Ejemplo Completo de Aplicación Express.js

A continuación, vamos a ver un ejemplo completo de una aplicación Express.js que utiliza enrutamiento y middleware:

const express = require('express');
const app = express();
const PORT = 3000;

// Middleware de registro de solicitudes
app.use((req, res, next) => {
  console.log(`Solicitud recibida en: ${req.url}`);
  next();
});

// Ruta GET en la raíz
app.get('/', (req, res) => {
  res.send('¡Hola, mundo desde Express.js!');
});

// Ruta POST para usuarios
app.post('/usuarios', (req, res) => {
  res.send('Información de usuario recibida y procesada');
});

// Ruta dinámica para usuarios
app.get('/usuarios/:id', (req, res) => {
  const { id } = req.params;
  res.send(`Solicitado usuario con ID: ${id}`);
});

// Middleware de manejo de errores
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Algo salió mal');
});

// Iniciar el servidor
app.listen(PORT, () => {
  console.log(`Servidor Express escuchando en el puerto ${PORT}`);
});

Este ejemplo muestra cómo crear un servidor web básico con Express.js, definir rutas para manejar diferentes tipos de solicitudes HTTP, y utilizar middleware para realizar tareas adicionales como el registro de solicitudes y el manejo de errores.

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github github-full