Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • E ECMAscript-Typescript
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 11
    • Issues 11
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • imunnic
  • ECMAscript-Typescript
  • Wiki
  • Modulo 4

Last edited by imunnic Feb 02, 2026
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Modulo 4

Módulo 4 — Uso de Servicios y API REST

Aplicación práctica: Conexión del sistema de gestión sanitaria con una API REST propia (consulta y actualización de recursos y personal).


1. Introducción a la asincronía

JavaScript es un lenguaje asíncrono y no bloqueante, lo que significa que puede ejecutar tareas sin detener el flujo principal (por ejemplo, esperar la respuesta de un servidor mientras sigue procesando otras acciones).

Esto es posible gracias al Event Loop y a las promesas (Promises), que permiten manejar operaciones que tardan tiempo, como peticiones a una API o lectura de archivos.

console.log("Iniciando petición...");
setTimeout(() => {
  console.log("Datos recibidos del servidor");
}, 2000);
console.log("Petición enviada");

El flujo no se detiene esperando la respuesta del servidor. Se ejecuta el setTimeout de forma asíncrona.


2. Qué es una API REST

Una API REST (Representational State Transfer) permite comunicarse entre aplicaciones a través de HTTP. Tu app de gestión sanitaria puede usar una API REST para consultar pacientes, recursos o personal almacenados en un servidor remoto.

Las API REST suelen intercambiar datos en formato JSON.


3. Métodos HTTP más comunes

Método Acción Ejemplo en la app
GET Obtener información Consultar la lista de recursos
POST Crear nuevo elemento Añadir un nuevo paciente
PUT Actualizar un registro completo Editar los datos de un recurso
PATCH Actualizar parcialmente Cambiar solo la cantidad de mascarillas
DELETE Eliminar un registro Eliminar un paciente dado de alta

4. Qué es JSON

JSON (JavaScript Object Notation) es el formato estándar de intercambio de datos entre cliente y servidor.

Se basa en pares clave–valor, muy similar a los objetos literales de JavaScript.

// Objeto literal
const recurso = {
  tipo: "Mascarillas",
  cantidad: 300,
  disponible: true
};

// Conversión a JSON
const json = JSON.stringify(recurso);
console.log(json); // '{"tipo":"Mascarillas","cantidad":300,"disponible":true}'

// Convertir JSON a objeto
const obj = JSON.parse(json);
console.log(obj.tipo); // "Mascarillas"

5. Peticiones HTTP con fetch()

La función fetch() permite realizar peticiones HTTP de forma asíncrona. Devuelve una Promise, lo que significa que podemos usar .then() o async/await.

Ejemplo: obtener recursos del servidor

fetch("https://api.hospitalcentral.com/recursos")
  .then(res => res.json())
  .then(data => {
    console.log("Recursos disponibles:", data);
  })
  .catch(error => {
    console.error("Error al obtener los datos:", error);
  });

6. Uso de async y await

La sintaxis async/await simplifica el manejo de promesas, haciéndolo más legible y cercano al código secuencial.

async function cargarRecursos() {
  try {
    const respuesta = await fetch("https://api.hospitalcentral.com/recursos");
    const datos = await respuesta.json();
    console.table(datos);
  } catch (error) {
    console.error("Error al cargar recursos:", error);
  }
}

cargarRecursos();

await detiene la ejecución dentro de la función asíncrona hasta que se resuelve la promesa.


7. Envío de datos (POST)

async function agregarRecurso() {
  const nuevo = {
    tipo: "Guantes",
    cantidad: 150
  };

  const respuesta = await fetch("https://api.hospitalcentral.com/recursos", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(nuevo)
  });

  const resultado = await respuesta.json();
  console.log("Recurso agregado:", resultado);
}

agregarRecurso();

8. Actualización y eliminación

PATCH (actualizar registro completo)

async function actualizarRecurso(id) {
  const recursoActualizado = {
    tipo: "Guantes estériles",
    cantidad: 200
  };

  await fetch(`https://api.hospitalcentral.com/recursos/${id}`, {
    method: "PATCH",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(recursoActualizado)
  });
}

DELETE (eliminar registro)

async function eliminarRecurso(id) {
  await fetch(`https://api.hospitalcentral.com/recursos/${id}`, {
    method: "DELETE"
  });
  console.log("Recurso eliminado correctamente");
}

9. CORS (Cross-Origin Resource Sharing)

CORS es un mecanismo de seguridad que controla qué dominios pueden acceder a los recursos de una API. Si tu frontend (http://localhost:3000) intenta acceder a una API en otro dominio (https://api.hospitalcentral.com), el servidor debe permitir explícitamente esa conexión.

Ejemplo de encabezado que el servidor debe devolver:

Access-Control-Allow-Origin: http://localhost:3000

Si CORS no está configurado, el navegador bloqueará la petición por seguridad.


10. Ejemplo práctico: mostrar recursos en la interfaz

<h2>Recursos disponibles</h2>
<ul id="lista"></ul>
<button id="btnCargar">Cargar recursos</button>
const btn = document.getElementById("btnCargar");
const lista = document.getElementById("lista");

btn.addEventListener("click", async () => {
  try {
    const res = await fetch("https://api.hospitalcentral.com/recursos");
    const recursos = await res.json();
    lista.innerHTML = ""; // limpiar lista previa

    recursos.forEach(r => {
      const li = document.createElement("li");
      li.textContent = `${r.tipo}: ${r.cantidad}`;
      lista.appendChild(li);
    });
  } catch (error) {
    alert("Error al cargar recursos");
  }
});

Este ejemplo conecta la interfaz del DOM con la API REST, mostrando datos dinámicamente desde el servidor.


11. Buenas prácticas

  • Usa async/await para código más legible.
  • Maneja siempre los errores con try...catch al hacer peticiones a servicios externos.
  • No compartas claves o URLs sensibles en el frontend.
  • Define funciones reutilizables para las peticiones.
  • Asegúrate de que tu servidor tenga configurado CORS correctamente.
Clone repository

Índice

  • Inicio
  • Modulo 1. Sitaxis básica
  • Modulo 2. Importaciones en Javascript
  • Modulo 3. Interacción con el BOM y con el DOM
  • Modulo 4. Uso de servicios y API REST