فرض کن توی پروژه JavaScript چندین بخش مستقیم به API وصل شدن:
fetch("/api/users")
fetch("/api/products")
fetch("/api/orders")اوایل پروژه هیچ مشکلی نداره.
اما چند ماه بعد Authentication تغییر میکنه.
مثلاً باید یک Header اضافه کنی:
Authorization: Bearer TOKEN
حالا باید بری تمام
fetchها رو پیدا کنی و تغییر بدی. 😐اینجاست که داشتن یک API Client مرکزی ارزش خودش رو نشون میده.
مثلاً:
const api = {
get(url) {
return fetch(`/api${url}`, {
headers: {
Authorization: `Bearer ${token}`
}
});
}
};حالا بقیه پروژه فقط با این لایه کار میکنن:
const users = await api.get("/users");بعداً اگر:
🔹 Base URL تغییر کرد
🔹 Authentication تغییر کرد
🔹 Retry لازم شد
🔹 Logging اضافه شد
🔹 Error Handling مرکزی خواستی
فقط یک نقطه رو تغییر میدی.
ساختار کلی:
UI
↓
Service
↓
API Client
↓
Backend
🔥 اینجاست که مفهوم Separation of Concerns از یک اصطلاح تئوری تبدیل میشه به چیزی که واقعاً زندگی برنامهنویس رو راحت میکنه.
💡 پروژههای بزرگ معمولاً با یک تصمیم بزرگ خراب نمیشن؛ با صدها تصمیم کوچیک که هرکدوم «فعلاً مشکلی ایجاد نمیکنن» به مرور غیرقابل نگهداری میشن.
@CodeVerse_dev