Parte 1 — Responder: lo primero que hace cualquier framework#
De levantar un proceso que escucha en un puerto a servir una respuesta correcta. El terreno común de todos los frameworks de servidor.
Clases 11 a 25 · 15 en total · 15 construidas · 11 tecnologías en juego.
🧭 De qué va esta parte#
Lo primero que hace cualquier framework de servidor es recibir una petición y devolver una respuesta. Quince clases sobre esa frase, porque dentro de ella caben casi todas las decisiones que un framework toma por ti.
El recorrido va de lo más simple —levantar un proceso que responde hola— a lo que ya no lo es: negociar el formato, transmitir sin conocer el tamaño total, comprimir, y decidir quién puede leer tu respuesta desde otro origen.
Todo lo de aquí está definido en un estándar público, así que cuando diez frameworks de seis ecosistemas coinciden no es casualidad ni gusto de nadie: lo dicta la especificación. Y cuando difieren, la diferencia es un valor por omisión — que es precisamente lo que interesa comparar.
🎒 Qué da por sabido#
- La parte 0, sobre todo la clase 003: qué es un contrato y por qué es idéntico para todos.
- Las cuatro partes de una petición HTTP y las cuatro familias de códigos de estado (conocimientos previos).
🎯 Qué sabrás hacer al terminarla#
- Levantar un servidor mínimo en cualquiera de diez frameworks y saber qué decidió cada uno por ti.
- Elegir el código de estado correcto y justificarlo con el estándar, no con la costumbre.
- Leer y escribir cabeceras sabiendo cuáles no distinguen mayúsculas y cuáles pueden venir repetidas.
- Distinguir un cuerpo ilegible de uno legible pero incompleto, y responder distinto a cada uno.
- Servir archivos, subirlos y transmitir en flujo sin gastar memoria proporcional al tamaño.
- Configurar CORS con una lista explícita, y explicar por qué reflejar cualquier origen equivale a no tener defensa.
🧵 Por qué en este orden#
Las cinco primeras clases son el núcleo mínimo: arrancar, enrutar, leer parámetros, elegir el verbo y elegir el código. Con eso ya se puede escribir una API entera, mal.
Las siete siguientes son lo que la separa de estar bien: cabeceras, cuerpo, negociación, redirecciones, estáticos, subidas y flujo.
Las tres últimas miran hacia abajo y hacia fuera: la compresión y CORS son decisiones de transporte, y la 025 abre el capó para ver qué hay entre el socket y tu función.
📚 Las clases#
| # | Clase | Qué resuelve | Nivel | Estado |
|---|---|---|---|---|
| 011 | Levantar un servidor y responder | Arrancar un proceso que escucha y devuelve una respuesta. | 🟢 introductorio | ✅ Construida |
| 012 | Rutas y parámetros de ruta | Extraer del camino la parte variable. | 🟢 introductorio | ✅ Construida |
| 013 | Parámetros de consulta | Leer la cadena de consulta y aplicar valores por omisión. | 🟢 introductorio | ✅ Construida |
| 014 | Verbos HTTP y su semántica | Elegir el método correcto y respetar lo que promete. | 🟢 introductorio | ✅ Construida |
| 015 | Códigos de estado | Devolver el código que describe lo ocurrido, no siempre 200. | 🟢 introductorio | ✅ Construida |
| 016 | Cabeceras: leer y escribir | Usar las cabeceras como parte del contrato, no como decoración. | 🟢 introductorio | ✅ Construida |
| 017 | Cuerpo JSON: recibir y devolver | Deserializar la entrada y serializar la salida sin sorpresas. | 🟢 introductorio | ✅ Construida |
| 018 | Negociación de contenido | Servir la representación que el cliente pide. | 🟡 intermedio | ✅ Construida |
| 019 | Redirecciones | Distinguir permanente de temporal y saber cuándo cambia el método. | 🟢 introductorio | ✅ Construida |
| 020 | Servir archivos estáticos | Entregar un archivo del disco con el tipo y la caché correctos. | 🟢 introductorio | ✅ Construida |
| 021 | Subida de archivos | Recibir multipart sin cargarlo entero en memoria. | 🟡 intermedio | ✅ Construida |
| 022 | Respuesta en flujo | Enviar la respuesta a trozos, sin construirla entera antes. | 🟡 intermedio | ✅ Construida |
| 023 | Compresión | Comprimir cuando compensa, y no cuando no. | 🟡 intermedio | ✅ Construida |
| 024 | CORS | Entender la comprobación previa antes de configurarla. | 🟡 intermedio | ✅ Construida |
| 025 | Qué hace tu framework con el socket | Ver la capa que hay debajo del framework: servidor, adaptador y protocolo. | 🔴 avanzado | ✅ Construida |
🎬 Las tecnologías que aparecen#
Entre paréntesis, en cuántas clases de esta parte interviene cada una. Estar aquí no es una recomendación: es que el problema de esa clase existe de verdad para esa tecnología.
| Ecosistema | Tecnologías |
|---|---|
| Python | FastAPI (15), Django (7), Flask (7) |
| Node.js | Express (15), Fastify (7) |
| JVM | Spring Boot (15) |
| .NET | ASP.NET Core (14) |
| Go | Gin (8) |
| PHP | Laravel (7) |
| Ruby | Ruby on Rails (7) |
| JavaScript | Node.js (1) |
📖 Las palabras que esta parte define#
Método HTTP · Código de estado · Cabecera · Negociación de contenido · Redirección · Respuesta en flujo · Codificación troceada · Bucle de eventos · Un hilo por petición · CORS · Origen · Comprobación previa
Todas, con su definición, en el glosario.
✅ Cómo se ejecuta una clase de esta parte#
node scripts/run-class.mjs 011El verificador arranca cada implementación, la somete a su contrato.json y declara cuáles omitió por no encontrar su cadena de herramientas. Si te faltan cadenas, node scripts/doctor.mjs dice cuáles y cómo se instalan.
➡️ Y después#
La parte 2 se mete entre la petición y tu manejador: todo lo que ocurre antes de que tu código se ejecute, y por qué eso es donde vive casi toda la seguridad.