Lesson 3

fetch vs Axios Output

Know what changes when a request moves from terminal cURL to browser or Node code.

Converting cURL to fetch or Axios is not only a syntax change. Runtime behavior can change too.

fetch

fetch is available in modern browsers and modern Node runtimes. It returns a response object and does not throw for HTTP 4xx or 5xx statuses.

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 wraps request and response behavior differently. It typically rejects for non-2xx responses and parses JSON automatically when possible.

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

Browser differences

A cURL command can send almost any header from your machine. Browser code is limited by CORS, forbidden headers, cookies, and credential rules. A converted request may be valid JavaScript but still fail in the browser.

Node differences

Node code may need environment variables, proxy settings, TLS options, or timeout handling that a simple cURL example does not show.

Treat generated code as a starting point. Review runtime assumptions before pasting it into production code.

When you want to practice, use the related DevCove tool — optional, not part of this lesson.

Open related tool

Back to course overview