API Types
🌐 Fetch API — Server Se Data Lo
fetch("/api/menu").then(res => res.json())
Fetch API se servers ko HTTP requests bhejte ho — data lo, data bhejo, files upload karo. Ye XMLHttpRequest (AJAX) ka modern replacement hai. Jaise restaurant mein order karna — order bhejo (request), kitchen banaye (server), waiter laaye (response).
fetch(url) Promise return karta hai. Pehle resolve mein Response object milta hai — usually .json() (JSON ke liye), .text() (text ke liye), ya .blob() (files ke liye) call karte ho actual data lene ke liye. POST requests ke liye second argument mein options object pass karo with method, headers, aur body.
Restaurant Analogy: fetch = waiter order le raha hai. URL = kitchen ka address. GET = "menu do" (read). POST = "yeh mera order hai" (write). Response = jo khana aata hai. Error 404 = "dish available nahi". Error 500 = "kitchen mein aag lagi".
Code Example
HTML — Fetch API — Server Se Data Lo
<!-- GET request — data lo -->
<script>
async function getMenu() {
try {
const response = await fetch("/api/menu");
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error("Fetch fail:", error.message);
}
}
</script>
<!-- POST request — data bhejo -->
<script>
async function submitOrder(orderData) {
try {
const response = await fetch("/api/order", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(orderData),
});
if (!response.ok) {
throw new Error(`Order fail: ${response.status}`);
}
const result = await response.json();
console.log("Order placed:", result);
} catch (error) {
console.error("Order fail:", error.message);
}
}
submitOrder({
items: ["biryani", "raita"],
total: 500,
address: "Hitech City, Hyderabad"
});
</script>
<!-- Free public API example (backend nahi chahiye) -->
<script>
async function getRandomUser() {
const res = await fetch("https://randomuser.me/api/?results=3");
const data = await res.json();
data.results.forEach(user => {
console.log(`${user.name.first} ${user.name.last} — ${user.location.city}`);
});
}
getRandomUser();
</script>fetch(url)GET request karo — Promise<Response> return karta haiawait fetch()Async/await syntax — .then() chains se cleanerresponse.okAgar status 200-299 hai toh true — HAMESHA check karo!response.json()Response body ko JSON mein parse karo — Promise return karta hairesponse.text()Response body ko plain text mein parse karoresponse.blob()Response ko binary data mein parse karo (files, images)method: "POST"HTTP method — GET, POST, PUT, DELETE, PATCHheadersRequest headers — Content-Type, Authorization, etc.body: JSON.stringify()Request body — JSON ke liye stringify karna zaroori!response.okHTTP errors check karo (404, 500) — fetch throw nahi karta!✅ When to Use
- Apne backend API se data lene ke liye
- Bina page reload ke forms submit karne ke liye
- External data load karne ke liye (weather, news, etc.)
- Server pe files upload karne ke liye
- Browser se koi bhi HTTP communication ke liye
❌ When NOT to Use
- Simple same-origin requests (form submit bhi kaam karta hai, par fetch better hai)
- Upload progress chahiye (XMLHttpRequest use karo uske liye)
- Server-side code (fetch sirf browser mein kaam karta hai)
ZAROORI:
fetch() HTTP errors (404, 500) pe throw NAHI karta. Sirf network errors pe throw karta hai. Tumhe response.ok ya response.status check karna HAMESHA. Yeh #1 fetch bug hai — developers sochte hain try/catch 404 handle karega, par nahi karta.