مهاجرت از Axios به Fetch API بومی Node.js
خلاصهٔ کاملتر
Axios سالهاست که محبوبترین کتابخونه برای HTTP request در Node.js بوده، اما حالا که Fetch API بهصورت بومی وارد Node.js شده، دیگه نیازی به این dependency خارجی نیست. یه codemod جدید منتشر شده که این مهاجرت رو بهصورت خودکار انجام میده.
دلایل منطقی برای این تغییر چنده: Fetch بخشی از خود Node.js هست و نیازی به نصب و نگهداری پکیج جداگانه نیست. چون به استانداردهای وب پایبنده، کدی که مینویسی هم در مرورگر و هم در Node.js کار میکنه. از طرفی حذف یه dependency خارجی یعنی یه سطح حملهی امنیتی کمتر.
از نظر نسخه، Fetch از Node.js v18 بهصورت آزمایشی (experimental) و از v21 بهصورت پایدار (stable) در دسترسه. اگه پروژهات هنوز از نسخههای قدیمیتر پشتیبانی میکنه، باید اول نسخهی مینیمال Node.js رو در engines فایل package.json بهروز کنی.
این codemod اکثر متدهای رایج Axios رو پوشش میده: get، post، put، patch، delete، head، options، request و حتی متدهای فرم مثل postForm. مثلاً یه GET ساده اینطوری تبدیل میشه:
// قبل
const all = await axios.get(base);
// بعد
const all = await fetch(base)
.then(async (res) => Object.assign(res, { data: await res.json() }))
.catch(() => null);برای درخواستهای POST هم body باید دستی به JSON.stringify پاس داده بشه و Content-Type صراحتاً ست بشه — چیزی که Axios قبلاً خودش مدیریت میکرد:
const created = await fetch(`${base}/add`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ todo: 'Use DummyJSON', completed: false, userId: 5 }),
}).then(async (res) => Object.assign(res, { data: await res.json() }));یه نکتهی مهم اینه که این ابزار هنوز برخی قابلیتهای پیشرفتهی Axios رو پوشش نمیده؛ مثل interceptors، cancel tokens یا instance سفارشی با axios.create(). پس اگه پروژهات از اینها استفاده میکنه، باید اون بخشها رو دستی مدیریت کنی.
نکات کلیدی:
- Fetch از Node.js v18 در دسترسه (v21 برای نسخهی پایدار)
- codemod متدهای اصلی Axios رو خودکار تبدیل میکنه
- در Fetch برخلاف Axios، باید JSON.stringify و Content-Type رو خودت ست کنی
- interceptors و axios.create() هنوز پشتیبانی نمیشن و باید دستی مهاجرت بشن
- مهاجرت یعنی یه dependency کمتر و سازگاری بیشتر با استانداردهای وب




