Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. Fetch API
JavaScriptIntermediate

Fetch API

fetch() দিয়ে ডেটা আনা, response কনভার্ট, error handling, POST + async/await — সম্পূর্ণ বাংলা গাইড।

27টি অংশবাংলা ভাষায়

Fetch API হলো ব্রাউজারের built-in উপায় — নেটওয়ার্ক থেকে ডেটা আনা-পাঠানো করতে। এটি Promise-ভিত্তিক।

GET রিকোয়েস্ট

fetch("https://api.example.com/users")
  .then((response) => response.json())
  .then((users) => console.log(users))
  .catch((error) => console.error(error));

async/await দিয়ে

async function loadUsers() {
  try {
    const response = await fetch(
      "https://api.example.com/users"
    );

    if (!response.ok) {
      throw new Error("নেটওয়ার্ক ভুল");
    }

    const users = await response.json();
    console.log(users);
  } catch (error) {
    console.error("ডেটা আনা ব্যর্থ:", error);
  }
}

loadUsers();

response.ok false হলে (যেমন 404) json() এখনও চলে, তাই এর আগেই চেক করা ভালো অভ্যাস।

POST রিকোয়েস্ট

const newUser = {
  name: "রহিম",
  email: "rahim@example.com",
};

fetch("https://api.example.com/users", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(newUser),
})
  .then((response) => response.json())
  .then((data) => console.log("তৈরি হয়েছে:", data));

PUT — সম্পূর্ণ বদল

async function updateUser(id, updated) {
  const res = await fetch(`https://api.example.com/users/${id}`, {
    method: "PUT",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(updated),
  });

  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  return res.json();
}

// পুরো object-টি প্রতিস্থাপন
await updateUser(1, { name: "করিম", email: "karim@example.com" });

PUT পুরো resource-টি নতুন মান দিয়ে বদলে দেয় — পাশের ফিল্ড বাদ গেলে সেগুলো মুছে যাবার ঝুঁকি (কোনো না থাকলে)।

PATCH — আংশিক বদল

async function patchUser(id, updates) {
  const res = await fetch(`https://api.example.com/users/${id}`, {
    method: "PATCH",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(updates),
  });

  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  return res.json();
}

// শুধু ভাঙা field
await patchUser(1, { email: "new@example.com" });

PATCH কেবল দেওয়া ফিল্ডগুলো বদলায় — বাকি name-এর মতো property অক্ষত থাকে। আলাদা মানে আলাদা।

DELETE

async function deleteUser(id) {
  const res = await fetch(`https://api.example.com/users/${id}`, {
    method: "DELETE",
  });

  if (!res.ok && res.status !== 204) {
    throw new Error(`HTTP ${res.status}`);
  }
  console.log("মুছে ফেলা হয়েছে");
}

await deleteUser(1);

DELETE-তে সাধারণত body-তে উত্তর নেই — success মানে 204 No Content বা প্রশাসনের status। 204-তে res.json() নেই, তাই চেক ঠিক করুন।

Headers — শিরোনাম কাস্টমাইজ

const headers = new Headers();
headers.set("Content-Type", "application/json");
headers.set("Authorization", "Bearer " + token);

const res = await fetch("/api/private", {
  method: "GET",
  headers,
});

// উত্তরের headers পড়া
console.log(res.headers.get("content-type"));

Headers object-এর সাহায্যে অনেক header ঠিক রাখা ও পড়া যায় — auth token, content-type, ইত্যাদি। অথবা সরলভাবে object literal-ও কাজ করে।

Error handling — একসাথে

async function request(url, options = {}) {
  try {
    const res = await fetch(url, options);
    if (!res.ok) {
      throw new Error(`HTTP ${res.status} ${res.statusText}`);
    }

    const contentType = res.headers.get("content-type") || "";
    return contentType.includes("application/json")
      ? await res.json()
      : await res.text();
  } catch (err) {
    // network error / non-2xx
    throw new Error("রিকোয়েস্ট ব্যর্থ: " + err.message);
  }
}

// ব্যবহার
const users = await request("/api/users");
await request("/api/users/1", { method: "DELETE" });

একটি wrapper request() দিয়ে সব method/error-কে এক দরজায় — অ্যাপ-এ এ রকম client-ই চলে।

UI-তে দেখানো

<button id="load">ডেটা লোড</button>
<ul id="list"></ul>

<script>
  document.getElementById("load")
    .addEventListener("click", async () => {
      const res = await fetch("/api/users");
      const users = await res.json();
      const list = document.getElementById("list");

      list.innerHTML = users
        .map(u => "<li>" + u.name + "</li>")
        .join("");
    });
</script>
Error handle ভুলবেন না

নেটওয়ার্ক বিপর্যয় (offline, server down) catch-এ ধরা পড়ে। data-কে try/catch এ wrap করুন যাতে UI crash না হয়।

সংক্ষেপ

fetch → response.json() → data ব্যবহার; ভুল হ্যান্ডলে response.ok চেক + try/catch। এটাই মূল রুটিন।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরAsync/AwaitপরেরJSON
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com