"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > الفرق بين أكسيوس والجلب في جافا سكريبت

الفرق بين أكسيوس والجلب في جافا سكريبت

تم النشر بتاريخ 2024-11-01
تصفح:103

Difference Between Axios & Fetch in Javascript

في JavaScript، يتم استخدام كل من Axios وFetch API الأصلي لتقديم طلبات HTTP، ولكن لديهم بعض الاختلافات من حيث الميزات وسهولة الاستخدام والوظائف. وإليكم الشرح:

1. سهولة الاستخدام:

  • أكسيوس:

    يعمل Axios على تبسيط عملية تقديم الطلبات والتعامل مع الاستجابات. يقوم تلقائيًا بتحليل استجابات JSON، مما يسهل التعامل معها.

     axios.get('/api/user')
       .then(response => console.log(response.data))
       .catch(error => console.error(error));
    
  • أحضر:

    باستخدام الجلب، تحتاج إلى التعامل بشكل صريح مع تحليل JSON، مما يضيف خطوة إضافية.

     fetch('/api/user')
       .then(response => response.json())
       .then(data => console.log(data))
       .catch(error => console.error(error));
    

2. التعامل مع الاستجابة:

  • أكسيوس: يقوم Axios تلقائيًا بحل الاستجابة ويطرح خطأ إذا كانت حالة الاستجابة خارج نطاق 2xx، حتى تتمكن من معالجة الأخطاء مباشرة في كتلة .catch().
  • أحضر:

    باستخدام ميزة الجلب، لا يتم التعامل مع رموز الحالة غير 2xx (مثل 404 أو 500) على أنها أخطاء. يجب عليك التحقق يدويًا من حالة الاستجابة وإلقاء خطأ إذا لزم الأمر.

     fetch('/api/user')
       .then(response => {
         if (!response.ok) throw new Error('Network response was not ok');
         return response.json();
       })
       .then(data => console.log(data))
       .catch(error => console.error(error));
    

3. اعتراض الطلب والاستجابة:

  • أكسيوس:

    توفر Axios أدوات اعتراضية مدمجة، مما يسمح لك بتعديل الطلبات أو التعامل مع الاستجابات على مستوى العالم، والتي يمكن أن تكون مفيدة لإضافة رموز المصادقة المميزة، والتسجيل، وما إلى ذلك.

     axios.interceptors.request.use(config => {
       config.headers['Authorization'] = 'Bearer token';
       return config;
     });
    
  • أحضر:

    لا يحتوي الجلب على أدوات اعتراضية مضمنة، لذلك تحتاج إلى تغليف استدعاء الجلب يدويًا في وظيفة مخصصة إذا كنت بحاجة إلى هذا السلوك.

4. توافق المتصفح:

  • أكسيوس: يعمل Axios على المتصفحات الأقدم (IE 11 والإصدارات الأقدم) ويتعامل مع عمليات التعبئة المتعددة داخليًا.
  • أحضر: واجهة برمجة تطبيقات الجلب غير مدعومة في Internet Explorer. قد تحتاج إلى ملف polyfill مثل Whatwg-fetch لدعمه في المتصفحات القديمة.

5. التعامل مع البيانات:

  • أكسيوس:

    يقوم Axios تلقائيًا بتقييد البيانات عند تقديم طلبات POST وتعيين نوع المحتوى على application/json. كما يدعم إرسال البيانات بتنسيقات أخرى مثل FormData بكل سهولة.

     axios.post('/api/user', { name: 'John' });
    
  • أحضر:

    في عملية الجلب، تحتاج إلى تقييد البيانات يدويًا وتعيين الرؤوس لطلبات POST.

     fetch('/api/user', {
       method: 'POST',
       headers: { 'Content-Type': 'application/json' },
       body: JSON.stringify({ name: 'John' })
     });
    

6. إلغاء الطلبات:

  • أكسيوس:

    يحتوي Axios على دعم مدمج لإلغاء الطلبات باستخدام CancelToken.

     const source = axios.CancelToken.source();
     axios.get('/api/user', { cancelToken: source.token });
     source.cancel('Request canceled.');
    
  • أحضر:

    باستخدام ميزة الجلب، ستحتاج إلى استخدام AbortController لإلغاء الطلبات، الأمر الذي قد يكون أكثر تعقيدًا بعض الشيء.

     const controller = new AbortController();
     fetch('/api/user', { signal: controller.signal });
     controller.abort();
    

7. معالجة الأخطاء:

  • أكسيوس: يقوم Axios تلقائيًا بإلقاء أخطاء للاستجابات غير 2xx، وتكون معالجة الأخطاء أكثر اتساقًا ومركزية.
  • أحضر: يتطلب الجلب مزيدًا من المعالجة اليدوية للأخطاء، لأنه لن يرفض الوعد إلا لأخطاء الشبكة، وليس لرموز حالة خطأ HTTP.

خاتمة:

  • أكسيوس أكثر ثراءً بالميزات، وسهل الاستخدام، ويوفر تجريدًا أفضل للتعامل مع الطلبات.
  • Fetch عبارة عن واجهة برمجة تطبيقات أصلية وحديثة تتطلب عددًا أقل من التبعيات ولكنها تحتاج إلى المزيد من العمل اليدوي للتعامل مع ميزات معينة مثل الأخطاء والاعتراضات ومعالجة البيانات.

إذا كنت تفضل مزيدًا من التحكم في طلباتك، فقد تلتزم بالجلب. إذا كنت تريد شيئا يبسط طلبات HTTP، فإن أكسيوس سيكون الخيار الأفضل.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/pulkitgovrani/difference-between-axios-fetch-in-javaScript-25od؟ إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3