Servidores Web desde Cero (Parte 4)

Extiende tu enrutador para rutas dinámicas con parámetros, p. ej. /users/:id y /products/:category/:id; extrae valores y pásalos al handler, gestionando errores.

18 sept 2025 • 5 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

En la Parte 4 de Servidores Web desde Cero explicamos cmo extender nuestro enrutador para soportar rutas dinmicas con parmetros en la URL, por ejemplo para manejar peticiones como /api/users/123 sin tener que registrar una ruta por cada id posible.

Resumen de lo que ya tenamos: un servidor HTTP limpio, un enrutador que registra rutas por mtodo y soporta coincidencias exactas como /users o /products. El problema es que las rutas estticas no escalan: no podemos registrar manualmente /users/1, /users/2, /users/3 para atender cualquier id.

La solucin es admitir patrones de ruta con parmetros, por ejemplo /users/:id. Primero implementamos la deteccin de patrones en la funcin resolveRoute para buscar coincidencias por patrn cuando no hay una ruta exacta. La idea principal es dividir la ruta solicitada y cada patrn registrada en segmentos separados por slash y comparar segmento por segmento: si el segmento del patrn empieza por dos puntos entonces es un parmetro y acepta cualquier valor, si no debe coincidir exactamente.

Esquema de la lgica en resolveRoute: obtener method y path de la peticin, intentar coincidencia exacta, y si falla dividir path en segmentos y recorrer las rutas registradas del mismo mtodo; para cada patrn dividir en segmentos, comprobar que el nmero de segmentos coincide y usar una funcin matchesPattern que recorre segmentos comparando valores literales y aceptando segmentos que empiezan por dos puntos como parmetros.

Funcin matchesPattern explicada: recorre los segmentos del patrn. Si el segmento empieza por dos puntos se trata como parmetro y siempre coincide. Si no, compara igualdad estricta con el segmento correspondiente de la ruta solicitada. Si todos los segmentos coinciden o son parmetros, la ruta es apta.

Ejemplo conceptual: para la peticin /users/123 obtenemos pathSegments igual a users, 123. Las rutas registradas para GET pueden incluir users/:id, products/:id, hello. La comprobacin de longitud filtra hello. Luego matchesPattern con users/:id devuelve verdadero porque el primer segmento coincide y el segundo es parmetro, mientras que products/:id falla en el primer segmento.

Una vez detectada la coincidencia por patrn necesitamos extraer los valores reales de los parmetros y ponerlos a disposicin del handler. Para ello se implementa extractParams que recorre los segmentos del patrn y cuando encuentra uno que empieza por dos puntos extrae el nombre del parmetro sin el prefijo dos puntos y lo asocia con el valor del segmento correspondiente de la ruta solicitada. Por ejemplo con patrn users/:id y ruta users/123 extractParams devuelve un mapa con id -> 123.

Para que los handlers puedan acceder a esos valores almacenamos el mapa de parmetros en el contexto de la peticin usando context.WithValue y retornamos el handler encontrado. A continuacin se puede crear una funcin auxiliar GetPathValue que lee el contexto y devuelve el valor del parmetro solicitado por clave.

Actualizacin del handler de usuarios: ahora el handler puede llamar a GetPathValue para obtener id, convertirlo a entero y buscar en el slice de datos del servidor el usuario correspondiente. Si el id no es nmero correcto se responde con un estado Bad Request y un error; si no existe el usuario se responde con Not Found; cuando todo va bien se responde con un objeto JSON con la informacin del usuario.

Pruebas: con esta implementacin peticiones como /users/1, /users/2, /users/4 o incluso /users/anything coinciden con el patrn /users/:id. Si el valor no es un entero o el usuario no existe devolvemos mensajes de error adecuados. La solucion soporta tambin patrn ms complejos como /products/:category/:id con varios parmetros anidados.

Que hemos logrado: coincidencia de patrones en rutas con parmetros, extraccin de valores de URL, exposicin de parmetros al handler mediante contexto, enrutamiento dinmico que funciona con cualquier id y manejo de errores para ids invlidos o recursos no encontrados.

Siguiente paso propuesto: en el siguiente capitulo nos centraremos en extraer datos desde la peticin misma, por ejemplo cuerpo JSON, cabeceras y query params, y combinar esa informacin con los parmetros de ruta para crear endpoints robustos.

Reto: intenta crear un patrn /products/:category/:id y un handler que use ambos parmetros para filtrar productos por categora e id y devuelve el resultado o un error adecuado si no existe.

Sobre Q2BSTUDIO: somos Q2BSTUDIO, empresa de desarrollo de software que ofrece aplicaciones a medida y software a medida para empresas de todos los tamaños. Nos especializamos en inteligencia artificial, ia para empresas y agentes IA, as como en ciberseguridad y servicios de pentesting para proteger infraestructuras y aplicaciones. Tambin ofrecemos servicios cloud AWS y Azure y soluciones de inteligencia de negocio y Power BI para transformar datos en decisiones. Si necesitas una aplicacin a medida podemos ayudarte; consulta nuestras soluciones de desarrollo en desarrollo de aplicaciones y software multiplataforma y conoce nuestras ofertas de inteligencia artificial en servicios de inteligencia artificial para empresas. Trabajamos tambi n en automatizacin de procesos, integraciones cloud y dashboards de business intelligence para que tus equipos tomen decisiones ms rpidas y seguras.

Palabras clave integradas naturalmente: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. Si quieres contactarnos para un proyecto de software a medida, migracin a cloud, auditoria de seguridad o iniciativa de inteligencia artificial, en Q2BSTUDIO tenemos la experiencia para llevarlo a cabo y asesorarte en cada paso.

Nota final: este enfoque de enrutamiento es sencillo y fsico para aplicaciones de ejemplo y prototipos. En produccin es recomendable considerar estructuras de datos ms eficientes para la bqueda de rutas y libreras maduras que ya implementan enrutamiento de alto rendimiento, extraccin de parmetros y validaciones adicionales.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat