Lição 3

Saída fetch vs Axios

Entenda o que muda ao levar uma requisição do cURL no terminal para código browser ou Node.

Converter cURL para fetch ou Axios não é apenas mudar sintaxe. O comportamento em runtime também pode mudar.

fetch

fetch está disponível em navegadores modernos e runtimes Node modernos. Ele retorna um objeto response e não lança erro automaticamente para status HTTP 4xx ou 5xx.

const response = await fetch("https://api.example.com/users", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "Ada" })
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}`);
}

Axios

Axios encapsula requisição e resposta de outra forma. Ele normalmente rejeita respostas não 2xx e faz parse de JSON automaticamente quando possível.

const response = await axios.post(
  "https://api.example.com/users",
  { name: "Ada" },
  { headers: { "Content-Type": "application/json" } }
);

Diferenças no navegador

Um comando cURL pode enviar quase qualquer header da sua máquina. Código no navegador é limitado por CORS, headers proibidos, cookies e regras de credentials. Uma requisição convertida pode ser JavaScript válido e ainda falhar no navegador.

Diferenças no Node

Código Node pode precisar de variáveis de ambiente, proxy, opções TLS ou timeout que um exemplo simples de cURL não mostra.

Trate código gerado como ponto de partida. Revise as suposições de runtime antes de colar em produção.

Voltar à visão geral do curso