Express.js: Cómo obtener parámetros GET sin sobreingeniería

Olvídate de parsear URLs manualmente en Express.js. La forma de obtener parámetros GET ya está integrada y es más simple de lo que crees.

Cuando trabajas con Express.js y necesitas obtener variables de la query string (los parámetros después del ? en la URL), no tienes que complicarte. Express ya te lo entrega listo en el objeto req. Mira este ejemplo directo:

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

app.get('/', (req, res) => {
  // Si la URL es /?id=123&name=jorge
  const userId = req.query.id;   // '123'
  const userName = req.query.name; // 'jorge'

  res.send(`Hola ${userName || 'mundo'}, tu ID es ${userId || 'no definido'}`);
});

app.listen(3000, () => console.log('Servidor escuchando en el puerto 3000'));

Como ves, el objeto req.query es una maravilla. Es un objeto JavaScript que contiene todos los parámetros GET de la URL, ya parseados y listos para que los uses. Es directo, limpio y te ahorra un montón de código.

Mucha gente, especialmente los que venimos de entornos donde había que parsear la URL a mano —como el famoso $_GET de PHP—, tiende a buscar soluciones más complejas. Piensan en tomar req.url y empezar a cortarlo con métodos de string, o incluso usar el módulo url nativo de Node.js con url.parse.

Yo he visto esto varias veces y, de verdad, si estás usando Express.js, no es necesario. Estás sobreingeniería algo que el framework ya te da hecho. Express se encarga de todo el proceso de decodificación y mapeo por ti. Es una de esas cosas que, una vez que las sabes, te preguntas cómo no las viste antes.

El módulo url de Node.js es útil, por supuesto. Puedes usar url.parse(request.url, true).query para obtener la query string como un objeto. Esto es lo que harías si estuvieras trabajando con Node.js puro, sin ningún framework. Pero en mi caso, si ya tengo Express, prefiero la solución que ya viene integrada. ¿Para qué reinventar la rueda?

De hecho, usar req.query no solo es más simple, sino que también es más legible y robusto. Express ya maneja casos de codificación y decodificación de URLs de forma segura, algo que tendrías que implementar si lo hicieras manualmente.

Entonces, ¿dónde está el error común? En intentar replicar funcionalidades que tu framework ya te ofrece de forma óptima. Si estás en Express, la respuesta casi siempre será req.query para los parámetros GET. No te compliques la vida buscando soluciones genéricas cuando la herramienta específica ya te da lo que necesitas en bandeja.

Jorge RequenaDeveloper full-stack · Chile