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 • Equip 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?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat