Fetch API¶
The Fetch API is used to make HTTP requests (GET, POST, etc.) from the browser. It returns a Promise.
1. Basic GET Request¶
fetch("https://api.example.com/data")
.then(res => res.json())
.then(data => {
console.log(data);
})
.catch(err => {
console.error("Fetch error:", err);
});
res.json()
parses JSON response- Always use
.catch()
to handle network errors
2. Using async/await
¶
async function getData() {
try {
const res = await fetch("https://api.example.com/data");
const data = await res.json();
console.log(data);
} catch (err) {
console.error("Error:", err);
}
}
3. POST Request (Sending Data)¶
fetch("https://api.example.com/users", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
name: "Alice",
age: 25
})
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
4. Common Options¶
Option | Description |
---|---|
method |
HTTP method (GET , POST , etc.) |
headers |
HTTP headers (e.g. Content-Type ) |
body |
Payload (for POST , PUT ) |
mode |
CORS control (cors , no-cors ) |
credentials |
same-origin , include |
5. Handling Errors Manually¶
Even if the response is 404/500, fetch()
doesn’t throw — you must check res.ok
.
async function getUser() {
const res = await fetch("/api/user");
if (!res.ok) {
throw new Error(`HTTP error ${res.status}`);
}
const data = await res.json();
console.log(data);
}
6. Sending Form Data (Non-JSON)¶
const formData = new FormData();
formData.append("username", "john");
formData.append("age", 30);
fetch("/submit", {
method: "POST",
body: formData
});
Use FormData
when submitting forms without setting headers manually.
7. Abort a Request¶
const controller = new AbortController();
fetch("/api/data", { signal: controller.signal })
.catch(err => console.error("Aborted"));
controller.abort(); // cancel the request