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