Programación

Obtener información de usuario desde una API

APIs y servicios web | 31/03/2025 | 26 vistas
Dayanaaa
Dayanaaa Autor
Obtener información de usuario desde una API

Obtener información de usuario desde una API

Programación - APIs y servicios web

Escuchar este contenido

JavaScript

En esta lección, vamos a aprender cómo aplicar principios de Arquitectura Limpia en un proyecto sencillo en JavaScript. Vamos a dividir nuestra aplicación en capas para que sea más organizada, fácil de mantener y extensible.


Conceptos clave

La Arquitectura Limpia se basa en separar nuestra aplicación en capas, donde cada una tiene una responsabilidad específica. Estas capas son:

1. Dominio (Domain): Define las reglas de negocio y las entidades principales de nuestra aplicación.

2. Datos (Data): Gestiona la obtención, almacenamiento y manipulación de datos.

3. Presentación (Presentation): Interactúa con el usuario y muestra la información.


Estructura del proyecto

bash
/project-root
│
├── /domain       # Capa de Dominio
│   └── User.js
│
├── /data         # Capa de Datos
│   └── UserRepository.js
│
├── /presentation # Capa de Presentación
│   └── app.js
│
└── package.json


Implementación por capas


1. Capa de Dominio (domain/User.js)

En esta capa definimos nuestro modelo principal, en este caso un User (Usuario).

javascript
// Modelo del dominio
class User {
    constructor(id, name, email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }
}

module.exports = User;

Explicación: Este archivo define un modelo básico que será utilizado por las otras capas. Aquí no se maneja lógica de presentación ni acceso a datos, solo la estructura.


2. Capa de Datos (data/UserRepository.js)

Esta capa se encarga de interactuar con la fuente de datos. Podría ser una API, una base de datos o un archivo.

javascript
const User = require('../domain/User');

class UserRepository {
    async fetchUserById(id) {
        // Simulación de datos obtenidos desde una API
        return new Promise((resolve) => {
            setTimeout(() => {
                resolve(new User(id, 'Jane Doe', '[email protected]'));
            }, 1000);
        });
    }
}

module.exports = UserRepository;

Explicación: Aquí simulamos una API que retorna un objeto User después de un tiempo (1 segundo). La capa de datos se encarga exclusivamente de obtener los datos.


3. Capa de Presentación (presentation/app.js)

Esta capa consume la información proporcionada por la capa de datos y la muestra al usuario.

javascript
const UserRepository = require('../data/UserRepository');

async function displayUserInfo(userId) {
    const repository = new UserRepository();
    const user = await repository.fetchUserById(userId);

    console.log(`Nombre: ${user.name}`);
    console.log(`Email: ${user.email}`);
}

// Ejecutar la función para mostrar la información del usuario
displayUserInfo(1);

Explicación: En esta capa, solo se presenta la información que fue obtenida de la capa de datos. No importa cómo se obtengan los datos, solo cómo se muestran.


¿Qué logramos con esto?

  • Desacoplamiento: Cada capa tiene su responsabilidad claramente definida.
  • Mantenibilidad: Podemos modificar una capa sin afectar las demás.
  • Escalabilidad: Podemos agregar nuevas funcionalidades sin romper la estructura existente.