Tratamento de erros
O corpo diz o que aconteceu. Descartá-lo é o erro mais caro que você pode cometer contra esta API.
- 1
Leia o corpo, não só o código
Um 400 de validação traz `issues` com o campo exato recusado. Sem isso, um erro de tipo em um campo é indistinguível de um problema de permissões.
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
Respeite Retry-After em um 429
Repetir em laço contra um limite de taxa só prolonga o bloqueio.
javascriptif (res.status === 429) { const wait = Number(res.headers.get("Retry-After") ?? 60); await new Promise((r) => setTimeout(r, wait * 1000)); }
Uma repetição pode duplicar. As escritas não são idempotentes: se um POST é cortado depois de criar e você repete, ficará com dois recursos. Guarde o id que a primeira resposta devolve e verifique antes de repetir.
