Guías

Tratamento de erros

O corpo diz o que aconteceu. Descartá-lo é o erro mais caro que você pode cometer contra esta API.

  1. 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.

    javascript
    const 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. 2

    Respeite Retry-After em um 429

    Repetir em laço contra um limite de taxa só prolonga o bloqueio.

    javascript
    if (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.