Centraliza las peticiones al API con un patrón repositorio en JavaScript para evitar cambios dispersos, mejorar pruebas y depurar con precisión. Aquí verás cómo crear una clase, integrar fetch y usar el debugger del navegador para inspeccionar datos en tiempo real.
¿Por qué usar el patrón repositorio en JavaScript con fetch y API?
El patrón repositorio permite encapsular la lógica de acceso a datos en una clase única. Si el API cambia (por ejemplo, el campo pasa de id a identificador), actualizas una sola pieza de código y todo sigue funcionando.
Centralización de llamadas al endpoint.
Menos duplicación y menos errores.
Cambios controlados ante evoluciones del API.
Mejor testabilidad y mantenibilidad.
Cohesión con programación orientada a objetos: clase, constructor, instancia y encapsulación.
¿Qué problema resuelve exactamente?
Cambios de contrato del API sin tocar múltiples archivos.
Reutilización de métodos como getProducts en distintas vistas.
Un solo lugar para manejar response, JSON y errores.
¿Qué conceptos clave aparecen?
Vanilla JavaScript y HTML sin framework.
Objeto global del DOM: window.
Prototipo de clases: en el prototype vive el método getProducts.
Depuración con debugger, breakpoints y panel sources.
¿Cómo implementar ProductRepository y centralizar la URL del API?
Creamos un archivo en js: repositories.js. Definimos una clase que recibe la URL base del API y expone un método asíncrono para obtener productos desde el endpoint products.
// js/repositories.jsclassProductRepository{constructor(url){this.url= url;// URL base del API (sin slash final).}asyncgetProducts(){const response =awaitfetch(`${this.url}/products`);const responseData =await response.json();return responseData;// Retorna datos en JSON.}}// Exponer una instancia global para uso en el navegador.// Asegúrate de pasar la URL sin slash final para evitar "//".window.productRepository=newProductRepository("https://tu-api.com");
Integramos el script en el template (después de los auxiliares como mockdata):
La URL debe ir sin el slash final para evitar doble concatenación con /products.
Al cargar la página, tendrás disponible en window la instancia: window.productRepository.
Esto habilita un punto único de acceso a productos, categorías u otras entidades que agregues.
¿Cómo se usa desde la consola?
Crea una referencia: const repo = window.productRepository.
Llama al método: await repo.getProducts().
Obtendrás un arreglo de productos listo para pintar en tu template.
¿Cómo depurar con el debugger del navegador y breakpoints?
Abrir las DevTools y usar el panel sources te permite pausar la ejecución, inspeccionar variables y entender cada paso del fetch.
Abre sources y localiza js/repositories.js.
Coloca un breakpoint dentro de getProducts.
En la consola: const repo = window.productRepository.
Ejecuta: await repo.getProducts() y la ejecución se pausará.
Inspecciona response y responseData para verificar estructura y valores.
¿Qué habilidades prácticas aplicas?
Uso de await en la consola del navegador.
Inspección de objetos anidados: responseData[4].images[0] para acceder a la primera imagen del quinto producto.
Corrección rápida de propiedades: diferenciar images de image al explorar datos.
Continuación de la ejecución tras una pausa y observación de la respuesta del endpoint.
¿Qué beneficios obtienes al depurar así?
Entiendes el flujo real antes de pintar datos en el template.
Detectas contratos del API y nombres de campos con precisión.
Ajustas el repositorio sin tocar componentes de UI.
¿Te gustaría que mostremos cómo pintar los productos en el template con el verbo GET y buenas prácticas de renderizado? Comparte tus dudas y retos en los comentarios.
¡Exacto, Daniel Darío! La clase explica cómo usar el patrón repositorio con programación orientada a objetos (clases) para centralizar y encapsular la lógica de las peticiones a la API. Así, si la API cambia, solo necesitas actualizar el código en un único lugar.
Podemos ver los breakpoints en accion?? Hay alguna otra herramienta para los breakpoints?
Así es, el instructor mostró un ejemplo con el inspect de Chrome, que permite pararte en el lugar que desees de tu código, para inspeccionar el contenido de las variables en runtime desde la consola. Así como en los browsers, los breakpoints también forman parte de los IDEs (e.g. Visual Studio Code) y constituyen una parte básica pero muy poderosa, para hacer troubleshooting de tu código (independientemente del lenguaje de programación o tecnología).
Hola, muy claras las explicaciones de Eduardo. ¿Es alguna extensión la que agrega en fetch "input:" y en la instancia de la clase new ProductRepository "url:" ? Muchas gracias.