API কী?
API (Application Programming Interface) হলো একটি ইন্টারফেস যার মাধ্যমে দুটি সফটওয়্যার যোগাযোগ করে। Web API সাধারণত HTTP ব্যবহার করে JSON ডেটা বিনিময় করে।
API-র প্রকারভেদ
- REST API — সবচেয়ে জনপ্রিয়, HTTP methods ব্যবহার করে
- GraphQL — নতুন, client বলে কী কী ডেটা দরকার
- SOAP — পুরনো, XML ভিত্তিক
- WebSocket — real-time, দ্বি-মুখী
REST (Representational State Transfer)
REST হলো কিছু নীতির সমষ্টি যা API ডিজাইনের নিয়ম ঠিক করে।
REST-এর মূল নীতি
- Resource-based URL —
/users,/posts/42/comments - HTTP Methods — GET, POST, PUT, PATCH, DELETE
- Stateless — প্রতিটি request স্বাধীন
- JSON response — ডেটা বিনিময়ের ভাষা
- Status Codes — 200, 201, 404, 500
REST API Endpoint Design
GET /users → সব user GET /users/42 → id 42 এর user POST /users → নতুন user তৈরি PUT /users/42 → user 42 পুরোপুরি update PATCH /users/42 → user 42 আংশিক update DELETE /users/42 → user 42 মুছে ফেলা GET /users/42/posts → user 42 এর সব post POST /users/42/posts → user 42 এর জন্য নতুন post
বাস্তব API Call — JSONPlaceholder
Free public API: https://jsonplaceholder.typicode.com
// সব post
fetch("https://jsonplaceholder.typicode.com/posts")
.then(r => r.json())
.then(posts => console.log(posts));
// নির্দিষ্ট post
fetch("https://jsonplaceholder.typicode.com/posts/1")
.then(r => r.json())
.then(post => console.log(post));
// নতুন post
fetch("https://jsonplaceholder.typicode.com/posts", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
title: "আমার পোস্ট",
body: "এটি একটি টেস্ট",
userId: 1
})
}).then(r => r.json()).then(data => console.log(data));
API Authentication
// ১. API Key (query param)
fetch(`https://api.example.com/data?api_key=${KEY}`);
// ২. API Key (header)
fetch("https://api.example.com/data", {
headers: { "X-API-Key": "your-key-here" }
});
// ৩. Bearer Token (JWT)
fetch("https://api.example.com/profile", {
headers: {
"Authorization": `Bearer ${token}`
}
});
// ৪. Basic Auth
fetch(url, {
headers: {
"Authorization": "Basic " + btoa("user:pass")
}
});
CORS (Cross-Origin Resource Sharing)
Browser নিরাপত্তার জন্য অন্য domain-এর API কল block করে, যদি সেই server CORS header না পাঠায়।
// Server (PHP) এ CORS enable
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
Error Handling ভালোভাবে
async function callApi(url, options) {
try {
const res = await fetch(url, options);
if (!res.ok) {
const errData = await res.json().catch(() => ({}));
throw new Error(errData.message || `HTTP ${res.status}`);
}
return await res.json();
} catch (err) {
if (err.name === "TypeError") {
console.error("Network error — ইন্টারনেট চেক করুন");
} else {
console.error("API ভুল:", err.message);
}
throw err;
}
}
// ব্যবহার
try {
const users = await callApi("/api/users");
renderUsers(users);
} catch (err) {
showError(err.message);
}
জনপ্রিয় Free APIs
- JSONPlaceholder — Fake REST API (testing)
- OpenWeatherMap — আবহাওয়া
- TMDB — সিনেমা ও টিভি
- GitHub API — GitHub ডেটা
- REST Countries — দেশের তথ্য
- NewsAPI — সংবাদ