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 read • Q2BSTUDIO Team

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.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat