← Lenguaje de marcas

UD6 · Guía y taller práctico

Servidor web y API con Node

La unidad que cierra el módulo. Las rutas sueltas de la UD5 se convierten en una API diseñada: recursos, contrato, CRUD completo, capas separadas y un cliente que consume su propia API de punta a punta, con la configuración y las pruebas necesarias para publicarla.

Duración18 sesiones · 6 semanas
ModalidadIndividual, con retos y defensa técnica final
Producto finalUna aplicación web completa: API REST con CRUD, validación y contrato de errores estable; capas separadas; la web de las unidades anteriores servida desde el mismo origen y consumiendo su propia API; configuración por entorno, seguridad mínima, pruebas automáticas, documentación y despliegue.

Antes de empezar

Necesitas
  • El proyecto mi-api de la UD5, con Express, estáticos, registro y errores centralizados.
  • El sitio de la UD1 a la UD4.
  • Node.js 22 o superior, npm, un cliente HTTP y una cuenta en una plataforma de despliegue gratuita.
Debes saber
  • HTTP: métodos, rutas, cabeceras y códigos de estado (UD4 y UD5).
  • Express: rutas, middleware, estáticos y manejo central de errores (UD5).
  • Estado, render y fetch con sus estados de carga, error y vacío (UD4).
  • Validación, JSON y módulos (UD3).

¿Qué vas a aprender?

En la UD5 conseguiste algo importante: un servidor propio que responde, aunque únicamente a un conjunto reducido de rutas incorporadas conforme fueron necesitándose.

Esta unidad convierte eso en un diseño.

De dónde vienes y a dónde llegas
  1. Rutas que funcionan
  2. Una API diseñada
  3. Una aplicación completa
  4. Publicada y defendida

Esta unidad cierra además el módulo completo. Al terminar habrás recorrido el recorrido íntegro: un documento con significado, un diseño que se adapta, una lógica que decide, una interfaz que reacciona, un servidor que responde y una aplicación que se publica.

La idea que gobierna la unidad

Una API es un contrato

Cuando alguien construye un cliente contra tu API, se apoya en que GET /api/productos/7 seguirá devolviendo lo mismo mañana, con la misma forma, y que un error seguirá teniendo la misma estructura. Cambiar eso sin avisar rompe programas ajenos.

Diseña por recursos, no por pantallas

La tentación es crear una ruta por cada cosa que necesita la interfaz: /api/datosDeLaPaginaDeInicio. Funciona hoy y ata la API a un diseño concreto: cambia la pantalla y hay que cambiar el servidor.

Una API se diseña sobre lo que existe en el problema —productos, categorías, pedidos— y sobre las operaciones que se hacen con ello. Las pantallas combinan esas piezas; no las definen.


El proyecto de la unidad

El mismo mi-api de la UD5, que crece hasta ser una aplicación:

mi-api/
│
├── package.json
├── .env.example
├── README.md
│
├── datos/
│   └── productos.json
│
├── src/
│   ├── servidor.js         ← arranque y configuración
│   ├── app.js              ← la aplicación Express
│   ├── rutas/
│   │   ├── productos.js
│   │   └── paginas.js
│   ├── servicio/
│   │   └── productos.js    ← las reglas
│   ├── repositorio/
│   │   └── productos.js    ← el acceso a los datos
│   ├── middleware/
│   │   ├── registro.js
│   │   └── errores.js
│   └── vistas/
│       └── catalogo.js     ← HTML generado en el servidor
│
├── pruebas/
│   └── productos.test.js
│
└── publico/                ← el cliente de la UD4

Una aplicación desplegada y accesible por URL: la web navegable, su API REST con el CRUD completo y su contrato de errores, las capas separadas, la configuración por entorno, las pruebas automáticas en verde y el README que explica cómo funciona.

Condición 1 · el andamiaje se retira

En la UD1 recibías cada paso explicado. Aquí recibes una especificación y decides tú la implementación. Habrá menos código en estos apuntes y más criterios, porque lo que se evalúa ya no es si sabes escribir una ruta, sino si sabes decidir cuál hace falta.

Condición 2 · nada llega al cliente sin validar, nada sale sin decidir

Todo lo que entra se valida en el servidor, y todo lo que sale constituye una decisión explícita: qué campos se devuelven, qué se oculta y qué se registra. Un objeto entero volcado en una respuesta acaba enseñando cosas que no debía.


Plan de trabajo semanal

Semana Bloque temático Práctica central Horas
Semana 1 Diseñar la API Recursos, contrato y estructura por capas 3 h
Semana 2 El CRUD completo Lectura, creación, modificación y borrado 3 h
Semana 3 Capas y consistencia Servicio, repositorio y contrato de errores 3 h
Semana 4 La web y su API HTML del servidor y cliente conectado 3 h
Semana 5 Listo para publicar Configuración, seguridad y pruebas 3 h
Semana 6 Cierre del módulo Proyecto final, despliegue y defensa 3 h
Total Una aplicación web completa y publicada 18 h
El ritmo de cada sesión
  1. Recupera · 5 min
  2. Decide y diseña · 10–20 min
  3. Implementa · 30–40 min
  4. Cierra · 5 min

No todo pesa lo mismo

Esencial · debes dominarlo Diseño por recursos, CRUD completo, códigos de estado, validación, capas y contrato de errores.
Importante · debes saber aplicarlo Escapado del HTML generado, configuración por entorno, CORS, seguridad mínima y pruebas.
Ampliación · cuando lo anterior funciona Paginación, versionado de la API, limitación de peticiones y documentación generada.