La forma más simple y poderosa de consumir una API en la web hoy es fetch. Con asincronismo y promesas, JavaScript se comunica con servidores en cualquier lugar para obtener productos, datos de usuario, autenticarse y guardar información. Entiende su anatomía, maneja errores sin sorpresas y practica con una fake API para dominar solicitudes HTTP reales.
¿Qué es fetch y cómo funciona en JavaScript?
Fetch es la API moderna de JavaScript para hacer solicitudes HTTP. Recibe una URL (endpoint) y retorna una promesa. Permite trabajar con datos remotos en cualquier sitio: servidores en Estados Unidos, Brasil, México o Colombia. Con esto, una web puede obtener información, autenticar y persistir datos.
- Endpoint: URL del recurso al que llamas.
- Promesa: estado pendiente, resuelta o rechazada.
- Parseo:
response.json() convierte el body a objeto JSON.
- Errores:
catch captura y registra fallos.
- Buenas prácticas: usar
const para valores que no cambian y nombres en mayúsculas para constantes.
¿Cómo luce un fetch de GET con promesas?
Ejecuta un GET pasando solo la URL. Evita cortar la cadena con punto y coma entre then.
// src/19-HTTP.js
const FAKE_API = 'URL_DE_LA_FAKE_API';
fetch(FAKE_API)
.then(response => response.json())
.then(data => {
console.log(data); // Previsualiza la información obtenida.
})
.catch(error => {
console.error(error); // Manejo de errores.
});
- Ojo con el encadenado: no cierres con
; antes del siguiente then.
- Puedes probar el código en una pestaña
about:blank y la consola del navegador.
- Verás la promesa como pendiente y luego resuelta con los datos (en el ejemplo se observaron 51 productos).
¿Qué métodos HTTP, headers y status codes debes dominar?
Además de GET, puedes crear, actualizar y eliminar recursos usando otros métodos HTTP. La sintaxis de fetch acepta un segundo argumento para configurar la solicitud.
¿Cómo enviar método, headers y body?
Define método, cabeceras y cuerpo según pida la documentación de la API (por ejemplo, la Platzi fake store). GET se sobreentiende cuando pasas solo la URL.
fetch(FAKE_API, {
method: 'POST', // También: 'PUT', 'DELETE', 'GET' (implícito si no lo defines).
headers: {
'Content-Type': 'application/json'
// Aquí puedes incluir autenticación u otros metadatos si el servidor lo requiere.
},
body: JSON.stringify({
// Estructura mínima que la API necesita para crear un recurso.
// Respétala según su documentación.
})
})
.then(res => res.json())
.then(data => {
console.log(data); // Recurso creado/actualizado/eliminado según el método.
})
.catch(err => console.error(err));
- Headers: metadata como tipo de contenido o autenticación.
- Body: datos enviados; usa
JSON.stringify para cumplir el formato esperado.
- Documentación: cada API define requisitos mínimos y estructura del recurso.
¿Cómo interpretar los status de la respuesta?
El response incluye un status que describe el resultado del request.
- 200: éxito.
- 201: creado (se agregó correctamente un recurso).
- 3xx: redirecciones.
- 400: error del cliente (permisos o datos faltantes).
- 401: no autenticado.
- 404: recurso no encontrado.
- 500: error interno del servidor.
Puedes inspeccionar el response en el navegador y validar si el producto de prueba se agregó haciendo un GET al endpoint y revisando los últimos elementos.
¿Cómo practicar para dominar el asincronismo con fetch?
Trabaja en tu editor creando un archivo como src/19-HTTP.js, declara la URL de la fake API en una constante y prueba solicitudes GET, POST, PUT y DELETE. Usa la consola para observar el ciclo de la promesa, parsea con response.json() y registra resultados con console.log.
- Asincronismo: espera resultados sin bloquear la UI.
- Promesas: encadena
then y finaliza con catch para errores.
- Depuración en navegador:
about:blank + DevTools para ver estados y status.
- Estructura de fetch: URL + opciones (método, headers, body).
- Validación: compara el
status y el contenido devuelto.
Si quieres, comparte en los comentarios cómo estructuraste tu fetch para crear y listar productos, y qué status estás observando en tus pruebas.