Servidores Web desde Principios (Parte 2)

Guía en Go para enrutar HTTP con un router profesional: enrutamiento por ruta y método, handlers modulares y soporte para rutas dinámicas para una API real.

18 sept 2025 • 5 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

En el Capitulo 1 construimos un servidor que respondia hello world a cada peticion. Eso es como tener una API que devuelve la misma respuesta tanto si el frontend llama a /api/users como a /api/products o /api/login. No muy util. En esta segunda entrega repensamos ese servidor para que sea consciente de las rutas, de modo que distintas rutas devuelvan distintas respuestas tal como en una API real.

Que ya tenemos hasta ahora Desde el Capitulo 1 contamos con un servidor basico que escucha en el puerto 3000, responde a peticiones HTTP y devuelve la misma respuesta para cualquier ruta. El problema que enfrentan los desarrolladores frontend es claro: cuando en el cliente se ejecuta algo como fetch a distintos endpoints se esperan datos diferentes para cada endpoint. Con el servidor actual siempre recibiriamos la misma respuesta.

Inspeccionando la ruta de la peticion La solucion empieza por mirar que es lo que el cliente pide. En Go eso se hace leyendo r.URL.Path dentro del metodo ServeHTTP. Si imprimimos el metodo y la ruta veremos entradas como GET /users o POST /api/login y a continuacion podemos devolver un mensaje que incluya la ruta solicitada para verificar que lo estamos leyendo correctamente. Por ejemplo al ejecutar en la terminal curl https://localhost:3000/users curl https://localhost:3000/products curl https://localhost:3000/api/login veremos respuestas que confirman la ruta solicitada.

Construyendo logica de rutas con switch Antes de saltar a una libreria de enrutamiento entendamos por que existen. La forma mas directa es usar una sentencia switch sobre la ruta y llamar a funciones manejadoras separadas. En ServeHTTP se obtiene path := r.URL.Path y se hace switch sobre path para despachar a funciones como hello, goodbye, getTime o welcome. Cada funcion escribira su propia respuesta en el ResponseWriter y asi mantenemos separadas las responsabilidades basicas.

Handlers sencillos Ejemplos de funciones manejadoras: welcome escribe un mensaje de bienvenida, hello escribe un saludo, goodbye escribe un mensaje de despedida y getTime obtiene la hora actual y la muestra. No olvides importar el paquete time para formatear la hora. Con esto al probar curl https://localhost:3000/hello curl https://localhost:3000/goodbye curl https://localhost:3000/time curl https://localhost:3000/ obtendremos respuestas distintas segun la ruta solicitada. Ahora nuestro servidor se comporta como una API simple.

Lo que hemos conseguido Resumen: en esta etapa tenemos enrutamiento basico por ruta, separacion limpia de handlers, manejo por defecto para rutas desconocidas y registro de peticiones para ver que se esta pidiendo al servidor.

Problemas que estamos creando Aunque el enfoque por switch funciona, aparece una serie de limitaciones que se vuelven dolorosas al escalar la aplicacion.

1. Ceguera ante el metodo HTTP El servidor no distingue entre metodos HTTP. Si haces curl -X POST https://localhost:3000/hello o curl -X DELETE https://localhost:3000/hello todas las llamadas obtendran la misma respuesta. En una API real GET /users y POST /users deben comportarse de forma muy diferente.

2. Sentencia switch que crece rapido Si se agregan muchas rutas el switch crece y se vuelve inmanejable, parecido a una enorme cadena de if-else en el frontend. Mantener y leer ese codigo se vuelve complejo.

3. Rutas dinamicas no soportadas Rutas como /users/123 o /products/456 requieren soporte para parametros en la ruta. Con switch estatico tendrias que escribir un caso por cada id posible, lo cual es inviable.

4. Firma de los handlers limitada Las funciones manejadoras en el ejemplo toman solo el ResponseWriter. En APIs reales necesitas acceder tambien al Request para leer query params, cabeceras y el cuerpo de la peticion.

Solucion rapida: soporte basico de metodos Antes de avanzar añadimos soporte para metodos HTTP leyendo r.Method y despachando segun metodo. Por ejemplo en ServeHTTP podemos hacer switch sobre method y llamar a s.handleGET o s.handlePOST pasando el Request y la ruta. Dentro de handleGET hacemos otro switch para rutas conocidas y en handlePOST lo mismo. Esto nos permite tener respuestas distintas para GET y POST en la misma ruta, pero la complejidad ya empieza a crecer rapidamente porque aparecen switch anidados y mas casos a mantener.

Ejemplo de comportamiento al probar curl curl -X GET https://localhost:3000/hello devuelve un saludo simple curl -X POST https://localhost:3000/hello devuelve una respuesta distinta curl -X PUT https://localhost:3000/hello devuelve metodo no permitido Este pequeño ejercicio muestra lo rapido que la solucion manual se complica cuando aumentan rutas y metodos.

Que sigue En el proximo capitulo construiremos un router adecuado, un componente separado encargado de casar rutas y metodos con handlers. Un router nos aportara separacion de responsabilidades, soporte sencillo para distintos metodos HTTP, facilidades para rutas dinamicas como /users/:id y una base mas solida para crecer de forma organizada. Es el equivalente a modularizar una aplicacion grande en lugar de mantener todo en un unico archivo.

Desafio Antes del Capitulo 3 intenta agregar algunas rutas mas para comprobar lo inmanejable que se vuelve el switch. Por ejemplo añade rutas para /api/users, /api/products y /api/orders con soporte tanto para GET como para POST. Veras como crece la complejidad y entenderas mejor el valor de un router.

Sobre Q2BSTUDIO y como podemos ayudar Q2BSTUDIO es una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida para empresas que necesitan soluciones escalables y seguras. Ademas somos especialistas en inteligencia artificial y ofrecemos servicios de ia para empresas, agentes IA y soluciones a medida que integran modelos de lenguaje con procesos de negocio. Si tu infraestructura necesita migracion o despliegue en la nube, ofrecemos servicios cloud aws y azure y diseñamos arquitecturas robustas para entornos productivos. Para proteger tus sistemas contamos con expertise en ciberseguridad y pentesting que detecta y mitiga riesgos antes de que afecten al negocio. Tambien apoyamos la toma de decisiones con servicios de inteligencia de negocio y Power BI que transforman datos en insights utilies.

Si buscas desarrollar una aplicacion web o movil completamente adaptada a tus requisitos revisa nuestras capacidades en aplicaciones a medida y software a medida y si tu proyecto requiere infraestructura en la nube podemos ayudarte con servicios cloud aws y azure. Tambien ofrecemos soluciones de inteligencia artificial para integrar agentes IA, automatizacion e inteligencia de negocio en tus procesos.

Palabras clave integradas aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws azure servicios inteligencia de negocio ia para empresas agentes IA power BI para mejorar posicionamiento. Si quieres que adaptemos este ejemplo a tu stack o necesitas que implementemos un router profesional, contacta con Q2BSTUDIO y te acompañamos desde el analisis hasta el despliegue y soporte continuo.

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