Manejo de errores
El cuerpo dice qué pasó. Descartarlo es el error más caro que podés cometer contra esta API.
- 1
Leé el cuerpo, no solo el código
Un 400 de validación trae `issues` con el campo exacto que se rechazó. Sin eso, un error de tipo en un campo es indistinguible de un problema de permisos.
javascriptconst res = await fetch(url, options); if (!res.ok) { const detail = await res.json().catch(() => ({})); if (detail.issues) { for (const i of detail.issues) console.error(`${i.path}: ${i.message}`); } throw new Error(`${detail.error ?? res.status}: ${detail.message ?? ""}`); } - 2
Respetá Retry-After en un 429
Reintentar en bucle contra un límite de tasa solo alarga el bloqueo.
javascriptif (res.status === 429) { const wait = Number(res.headers.get("Retry-After") ?? 60); await new Promise((r) => setTimeout(r, wait * 1000)); }
Un reintento puede duplicar. Las escrituras no son idempotentes: si un POST se corta después de crear y lo reintentás, vas a tener dos recursos. Guardá el id que devuelve la primera respuesta y verificá antes de reintentar.
