50% OFF Plus
--:--:--
¡Obtener!

Express: Routing

Express
Express
Actualizado: 20/06/2025

¡Desbloquea el curso completo!

IA
Ejercicios
Certificado
Entrar

Routing en Express

El routing constituye el núcleo fundamental de cualquier aplicación web construida con Express. Se encarga de determinar cómo responde la aplicación a las solicitudes del cliente hacia endpoints específicos, definidos por una URL y un método HTTP particular.

En Express, una ruta se compone de tres elementos esenciales: el método HTTP (GET, POST, PUT, DELETE, etc.), la ruta o path, y una función de callback que se ejecuta cuando la ruta coincide con la solicitud entrante.

Definición básica de rutas

Express proporciona métodos que corresponden directamente con los verbos HTTP más utilizados. La sintaxis básica sigue el patrón app.METHOD(PATH, HANDLER), donde METHOD es el método HTTP en minúsculas.

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

// Ruta GET básica
app.get('/', (req, res) => {
  res.send('¡Bienvenido a la página principal!');
});

// Ruta POST para crear recursos
app.post('/usuarios', (req, res) => {
  res.json({ mensaje: 'Usuario creado correctamente' });
});

// Ruta PUT para actualizar recursos
app.put('/usuarios/:id', (req, res) => {
  const userId = req.params.id;
  res.json({ mensaje: `Usuario ${userId} actualizado` });
});

Parámetros de ruta

Los parámetros de ruta permiten capturar valores dinámicos de la URL. Se definen utilizando dos puntos (:) seguidos del nombre del parámetro, y están disponibles en el objeto req.params.

// Parámetro simple
app.get('/productos/:id', (req, res) => {
  const productId = req.params.id;
  res.json({ producto: `Producto con ID: ${productId}` });
});

// Múltiples parámetros
app.get('/categorias/:categoria/productos/:id', (req, res) => {
  const { categoria, id } = req.params;
  res.json({ 
    categoria: categoria,
    producto: id 
  });
});

Los parámetros también pueden incluir patrones opcionales utilizando el signo de interrogación:

// Parámetro opcional
app.get('/archivos/:nombre.:extension?', (req, res) => {
  const { nombre, extension } = req.params;
  res.json({ 
    archivo: nombre,
    tipo: extension || 'sin extensión'
  });
});

Patrones de ruta avanzados

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

Express utiliza internamente la librería path-to-regexp para el matching de rutas, lo que permite patrones más sofisticados mediante expresiones regulares y wildcards.

// Wildcard para cualquier carácter
app.get('/buscar/*', (req, res) => {
  const termino = req.params[0];
  res.json({ busqueda: termino });
});

// Patrones con expresiones regulares
app.get(/.*volar$/, (req, res) => {
  res.send('Rutas que terminan en "volar"');
});

// Parámetros con restricciones
app.get('/numeros/:id(\\d+)', (req, res) => {
  res.json({ numero: req.params.id });
});

Query parameters y manejo de datos

Los query parameters se acceden a través de req.query y proporcionan una forma de pasar información adicional en la URL:

// URL: /productos?categoria=electronica&precio=100
app.get('/productos', (req, res) => {
  const { categoria, precio } = req.query;
  res.json({ 
    filtros: {
      categoria: categoria || 'todas',
      precioMaximo: precio || 'sin límite'
    }
  });
});

Para el manejo del body en peticiones POST y PUT, Express requiere middleware adicional:

// Middleware para parsing JSON
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.post('/contacto', (req, res) => {
  const { nombre, email, mensaje } = req.body;
  res.json({ 
    respuesta: `Gracias ${nombre}, hemos recibido tu mensaje` 
  });
});

Express Router

Para aplicaciones más complejas, Express Router permite modularizar las rutas en archivos separados, mejorando la organización y mantenibilidad del código.

// routes/usuarios.js
const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.json({ usuarios: [] });
});

router.get('/:id', (req, res) => {
  res.json({ usuario: req.params.id });
});

router.post('/', (req, res) => {
  res.json({ mensaje: 'Usuario creado' });
});

module.exports = router;
// app.js principal
const usuariosRouter = require('./routes/usuarios');
app.use('/api/usuarios', usuariosRouter);

Middleware de ruta

El middleware de ruta permite ejecutar código antes de que se procese la respuesta final. Es especialmente útil para validaciones, autenticación y logging:

// Middleware específico para una ruta
app.get('/admin/*', verificarAutenticacion, (req, res) => {
  res.send('Área de administración');
});

function verificarAutenticacion(req, res, next) {
  const token = req.headers.authorization;
  if (token) {
    next(); // Continúa al siguiente middleware
  } else {
    res.status(401).json({ error: 'No autorizado' });
  }
}

También es posible encadenar múltiples middlewares para una misma ruta:

app.get('/datos', 
  validarParametros,
  registrarAcceso,
  (req, res) => {
    res.json({ datos: 'información procesada' });
  }
);

El sistema de routing de Express proporciona la flexibilidad necesaria para construir APIs REST robustas y aplicaciones web escalables, permitiendo un control granular sobre cómo se manejan las diferentes solicitudes HTTP en tu aplicación.

Completa Express y certifícate

Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración