Angular 21 de Cero a Experto / HTTP y datos
Reto: la capa de datos de Mi Bolsillo con caché
Vas a construir la columna vertebral de datos de "Mi Bolsillo": un servicio que lee y escribe gastos contra una "API", con una caché que ahorra peticiones e invalidación correcta tras cada mutación. Es el patrón profesional que evita tanto las peticiones de más como el bug de mostrar datos viejos. Hoy lo dejas listo con la lógica probada en vivo.
Reto
Servicio de datos con caché e invalidación
Qué debes construir
Un RepositorioGastos que envuelva la "API" con caché:
- Lecturas cacheadas:
listar()devuelve de la caché si está fresca; si no, "pide al servidor", cachea con TTL y devuelve. Cuenta las peticiones reales. - Escrituras con invalidación:
crear(gasto),actualizar(gasto)yeliminar(id)hacen la mutación e INVALIDAN la caché de la lista, para que la próxima lectura sea fresca. - Estadísticas: expón cuántas peticiones reales se hicieron y cuántas se sirvieron de caché, para demostrar el ahorro.
Reglas
- La caché debe tener TTL (expiración por tiempo) además de invalidación por escritura.
- Toda mutación (crear/actualizar/eliminar) invalida la caché de la lista.
- Una lectura tras otra sin mutaciones no debe repetir la petición (mientras esté fresca).
35:00
Cuando estés listo, arranca el reloj.
Qué sigue
Terminaste el módulo de datos: tu app puede leer y escribir contra un backend, con estados, interceptores y caché. A medida que la app crece, ese estado —el que viene del servidor y el propio de la UI— necesita organizarse a gran escala. El próximo módulo es el estado a gran escala: stores de features, NgRx SignalStore, arquitectura por features y el patrón facade. Cómo estructurar el estado de una app que vive años.