Skip to main content
JavaScript & the browser·Module C4 · Lesson 4
TaskPOST { name: 'Anna' } to /api/users with proper Content-Type. Parse the returned JSON, log the created user's id (should be 42).

POSTing JSON: method + headers + body

100 XP8 min
Theory

The four-field POST

const r = await fetch("/api/users", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "Anna", age: 30 }),
});

Four fields cover 90% of API calls:

  • method"GET" (default), "POST", "PUT", "PATCH", "DELETE".
  • headers — Content-Type tells the server how to parse the body; Authorization carries the token.
  • body — what to send. For JSON: JSON.stringify(obj). For form data: a FormData instance.

The two body shapes you'll write

// JSON body (most modern APIs)
body: JSON.stringify({ name: "Anna" }),
headers: { "Content-Type": "application/json" },

// Form-urlencoded body (legacy APIs, OAuth)
body: new URLSearchParams({ name: "Anna" }),
// no Content-Type needed — fetch sets application/x-www-form-urlencoded

FormData works the same way — fetch detects it and sets the multipart content-type automatically (don't set it manually, you'll mangle the boundary).

Reading the response

const created = await r.json();   // { id: 42, name: "Anna" } if the API returns the created record
console.log(created.id);

Most REST APIs return the created resource on POST so the client doesn't need a second round-trip.

Including credentials

fetch(url, { credentials: "include" });

By default, fetch does NOT send cookies on cross-origin requests. credentials: "include" opts in. The server must respond with Access-Control-Allow-Credentials: true for the browser to accept.

🔒

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial — card required, cancel anytime.

Sign up — free trial →

First 15 lessons in each track are free. No card needed for those.

PreviousNext lesson →

Get one Python or web tip a day — by email

Short, hand-written, no spam. Unsubscribe in one click.