Aprende a consumir una API REST con autoridad usando fetch en JavaScript. Verás cómo leer el Response, convertir el body con .json(), manejar errores con response.ok y catch, y configurar verbos y headers como Content-Type y Accept. Todo con ejemplos claros y prácticos.
¿Cómo usar fetch en JavaScript para consumir una API REST?
Para realizar peticiones HTTP modernas, los navegadores exponen la función fetch. Esta función recibe como primer parámetro el origen o endpoint y retorna una promesa. Por eso es clave dominar el asincronismo con then o con async/await.
fetch retorna un objeto Response con metadatos útiles: status, ok, headers y acceso al body.
El body no es legible directamente: debes convertirlo con el método adecuado como .json().
El body se puede consumir una sola vez. Si necesitas leerlo de nuevo, repite la solicitud.
¿Qué retorna fetch y cómo leer el response?
El primer .then recibe el Response. Ahí puedes verificar el estado y luego convertir el body a JSON.
Cuando el proceso es más complejo, usa async/await. El código es más directo y fácil de leer.
const response =awaitfetch('https://api.ejemplo.com/productos');if(!response.ok){thrownewError('No es posible procesar la solicitud.');}const jsonResponse =await response.json();console.log(jsonResponse);
await espera a que la promesa se resuelva.
response.ok sirve para validar antes de leer el body.
¿Cómo manejar errores con fetch: ok, status y catch?
Hay dos grandes escenarios de error. Uno, cuando el servidor responde con error HTTP pero hay Response. Dos, cuando existe un fallo de conexión y no hay Response.
¿Qué diferencia hay entre error de red y error HTTP?
Error HTTP: la API responde con status distinto de 2xx y ok es false.
Error de red o protocolo: no hay Response y fetch lanza una excepción (por ejemplo, TypeError: failed to fetch).
¿Cómo lanzar excepciones cuando response.ok es false?
Valida response.ok. Si es false, lanza un error con un mensaje útil.
const r =awaitfetch('https://api.ejemplo.com/productos/1');if(!r.ok){thrownewError('No es posible encontrar el recurso.');}const data =await r.json();console.log(data);
Útil para controlar flujos cuando el recurso no existe.
Permite separar errores esperados de problemas de red.
¿Cómo capturar errores con then y catch?
Con el estilo de promesas, usa .catch para atrapar fallos de red.
fetch('https://api.ejemplo.com/productos/1').then(r=> r.json()).then(json=>console.log(json)).catch(err=>console.error('Error en la petición:', err));
.catch captura errores de conexión o de ejecución en la cadena.
Para errores HTTP, decide según status o ok antes de .json().
¿Cómo procesar distintos content-type y configurar verbos y headers?
Según el Content-Type, debes elegir el método de lectura correcto del body. Además, fetch permite cambiar el verbo HTTP y enviar headers personalizados.
¿Cómo leer blobs e imágenes con blob?
Para imágenes u otros archivos binarios, usa .blob(). Recuerda no invocar dos veces el método de lectura del body.