axios یه کتابخانه جاوااسکریپته برای فرستادن درخواست HTTP از مرورگر و Node.js که بر پایه Promise کار می کنه. باهاش می تونی به API درخواست بزنی، پاسخ JSON رو راحت بگیری، خطاها رو یک جا مدیریت کنی و تنظیمات مشترک رو برای کل پروژه نگه داری.
نسخه رسمی و بدون تغییر، از منبع رسمی با مجوز MIT؛ هش هر فایل با منبع بررسی شده است.
هر وقت صفحه ات باید با یه API حرف بزنه، مثلاً لیست محصولات رو بگیره، فرم رو بفرسته یا وضعیت یه سفارش رو چک کنه، باید یه درخواست HTTP بفرستی. axios این کار رو با یه رابط تمیز و مبتنی بر Promise انجام می ده. هم توی مرورگر کار می کنه و هم توی Node.js، پس یه الگوی کدنویسی رو برای فرانت و بک اند هر دو می تونی استفاده کنی.
امکاناتش کم نیست. متدهای ساده ای مثل get و post داره و داده ها رو خودش به JSON تبدیل می کنه و برعکس. interceptor ها اجازه می دن قبل از هر درخواست یه کاری بکنی، مثلاً توکن رو توی هدر بذاری، یا بعد از هر پاسخ یه کاری انجام بدی، مثلاً خطای منقضی شدن ورود رو یک جا بگیری. می تونی یه instance با آدرس پایه و هدرهای مشترک بسازی تا این تنظیم ها توی کل پروژه تکرار نشن. timeout، لغو درخواست و نمایش پیشرفت آپلود هم جزو امکاناتشه. پاسخ هایی که وضعیت خطا دارن هم خطا حساب می شن و به catch می رسن.
axios برای پروژه های Vue و React، پنل های مدیریتی، اسکریپت های Node و سایت های وردپرسی که فرانتشون جدا نوشته شده یا headless کار می کنن خوبه. ولی همه جا لازم نیست. اگه توی یه قالب یا افزونه وردپرس فقط یه درخواست ساده داری و jQuery یا wp.apiFetch از قبل توی صفحه هست، اضافه کردن یه کتابخانه دیگه معنی نداره. برای یه درخواست یک خطی هم fetch خود مرورگر معمولاً کافیه. یه نکته رو هم یادت باشه: axios مشکل CORS رو حل نمی کنه. اون تنظیم سمت سرور مقصده.
توی شرایط سایت های ایرانی دو تا چیز رو جدی بگیر. اول timeout. اینترنت همیشه پایدار نیست و درخواستی که بی نهایت منتظر بمونه، کاربر رو با یه صفحه خالی ول می کنه. یه timeout منطقی بذار و پیام خطای قابل فهم نشون بده. دوم، اگه API خارجی صدا می زنی، ممکنه از داخل ایران در دسترس نباشه. این مشکل از axios نیست، ولی بهتره قبل از انتشار از شبکه داخلی تستش کنی. موقع ارتقا بین نسخه های اصلی هم یادداشت تغییرات رو بخون، چون بعضی رفتارها عوض می شن.
نسخه های رسمی و بدون تغییر axios توی مخزن داخلی ما هم هست. وقتی دسترسی به npm یا CDN های خارجی کند یا قطع شده، می تونی از همین جا برش داری و روی هاست یا سرور خودت استفاده کنی.
راهنمای استفاده
axios رو دو جور می شه استفاده کرد: توی صفحه وب با تگ script، یا توی یه پروژه با npm. هر کدوم به کارت می آد، همون مسیر رو برو.
اگه سایتت وردپرسیه و بیلد جداگانه نداری، فایل رو از همین صفحه بردار و با کد آماده پایین صفحه توی قالب یا افزونه ات اضافه کن. بهتره با wp_enqueue_script بارگذاری بشه تا با بقیه اسکریپت ها تداخل نکنه.
توی پروژه ای که npm داره، بسته axios رو نصب کن و هر جا لازم شد import کن.
اول یه instance بساز و آدرس پایه API، هدرهای مشترک و timeout رو همون جا تنظیم کن. بعداً کلی وقتت رو نجات می ده.
برای خوندن داده از get و برای ارسال از post استفاده کن. پاسخ JSON خودکار پارس می شه و داده اش توی ویژگی data پاسخ هست.
حتماً خطاها رو با catch یا try و catch بگیر. خطای شبکه، timeout و پاسخ های ناموفق رو جدا از هم بررسی کن تا پیام درست رو به کاربر نشون بدی.
اگه توکن ورود داری، به جای تکرارش توی هر درخواست، از interceptor استفاده کن.
قبل از انتشار روی سایت اصلی، یه بار با اینترنت کند یا قطع تست کن که صفحه ات درست رفتار می کنه.
نشانی مستقیم فایل اصلی 0.21.1https://mirror.wbweb.ir/npm/axios@0.21.1/dist/axios.min.js
پرسشهای رایج
fetch توی خود مرورگر هست و برای درخواست های ساده کافیه. axios امکانات بیشتری داره: interceptor، timeout راحت، instance با تنظیمات مشترک و تبدیل خودکار JSON. اگه پروژه ات درخواست زیاد داره یا ورود و توکن رو مدیریت می کنی، با axios کارت راحت تره. برای یه درخواست پراکنده لازم نیست بهش وابسته بشی.
آره، چون جاوااسکریپت معمولیه و فقط باید توی صفحه بارگذاری بشه. بهتره با سیستم enqueue خود وردپرس اضافه ش کنی. ولی اگه فقط با REST API وردپرس کار داری، wp.apiFetch یا jQuery که از قبل هستن شاید کافی باشن و کتابخانه جدید نخوای.
CORS محدودیتیه که مرورگر اعمال می کنه و به axios ربطی نداره. سرور مقصد باید اجازه بده از دامنه تو درخواست بیاد. اگه API مال خودته، هدرهای مجاز رو سمت سرور تنظیم کن. اگه مال یه سرویس دیگه ست، معمولاً باید از بک اند خودت واسطه بسازی.
نسخه رسمی و بدون تغییرش توی مخزن داخلی ما هست. فایل رو از همین صفحه بردار، روی هاست یا سرور خودت بذار و مثل یه اسکریپت معمولی توی صفحه صدا بزن. اگه پروژه ات بیلد داره، فایل رو داخل خود پروژه نگه دار تا به اینترنت بین الملل وابسته نباشی.
نه، هم توی مرورگر اجرا می شه و هم توی Node.js. برای همین می تونی برای فراخوانی API، هم توی فرانت و هم توی اسکریپت های سمت سرور، از یه روش مشترک استفاده کنی. مثلاً برای کرون جاب هایی که به سرویس های دیگه درخواست می زنن.
prebid-universal-creative یه بسته جاوااسکریپتیه که تبلیغ برنده رو توی سایت هایی با Prebid و هدر بیدینگ نشون می ده. این کد توی کریتیو اد سرور قرار می گیره و بعد از تموم شدن مزایده، تبلیغ رو توی جایگاه نشون می ده. مجوزش Apache هست و نسخه رسمی ش توی مخزن ما موجوده.
workbox-cdn یه بسته آماده از کتابخونه Workbox گوگله که بدون ابزار build و فقط با بارگذاری یه اسکریپت می تونی توی سایتت استفاده کنی. با Workbox سرویس ورکر رو راحت تر می نویسی، کش و حالت آفلاین رو مدیریت می کنی و بازدیدهای بعدی سایتت سریع تر باز می شن.
mathjax یه کتابخانه متن باز جاوااسکریپته که فرمول های ریاضی رو توی مرورگر نمایش می ده. فرمولی که با LaTeX، MathML یا AsciiMath نوشتی رو به متن تیز، قابل انتخاب و قابل دسترس تبدیل می کنه، پس لازم نیست از فرمول ها عکس بگیری. مجوزش Apache هست و بسته npm هم داره.
sweetalert2 یه کتابخانه جاوااسکریپته که به جای پنجره های پیش فرض مرورگر، یعنی alert و confirm و prompt، پنجره های پیام، تایید و ورودی تمیز و ریسپانسیو نشون می ده. ظاهرش قابل تنظیمه و طبق معرفی رسمی از دسترس پذیری WAI-ARIA پشتیبانی می کنه. سازنده اش Limon Monte و مجوزش MIT هست.
search-insights یه کتابخانه جاوااسکریپت از Algolia با مجوز MIT هست که کلیک، تبدیل و بازدید کاربرها روی نتیجه های جستجو رو به Insights API خود Algolia گزارش می ده. اگه جستجوی سایتت با Algolia کار می کنه، با این بسته می تونی رفتار کاربرها رو ثبت کنی و کیفیت جستجو رو بهتر کنی.
js-cookie یه کتابخانه جاوااسکریپت ساده و خیلی سبکه که کار با کوکی های مرورگر رو راحت می کنه. با چند تا متد کوتاه می تونی کوکی بسازی، بخونی و پاک کنی و لازم نیست با رشته خام document.cookie سروکله بزنی. مجوزش MIT هست و به کتابخانه دیگه ای وابسته نیست.
آخرین نسخه
۳.۰.۸
نسخهها
۸
بهروزرسانی
چیزی که لازم دارید اینجا نیست؟
نام کتابخانه، افزونه یا قالب را بفرستید؛ پس از بررسی، نسخههای رسمی آن به مخزن اضافه میشود.