كيفية التعامل مع مهلة Axios في عام 2025

تعلم كيفية التعامل مع مهلة axios كمحترف باستخدام أفضل الممارسات والأدوات المتاحة. اكتشف كيفية إعداد، والتقاط، والتعامل مع خطأ المهلة في axios، وكيفية اختبار وتصحيح الأخطاء باستخدام Apidog.

Amir Hassan

Amir Hassan

29 مايو 2025

كيفية التعامل مع مهلة Axios في عام 2025

هل سبق لك أن واجهت الإحباط نتيجة انتهاء مهلة طلب واجهة برمجة التطبيقات، مما أدى إلى حدوث أخطاء مثل "فشل الطلب مع رمز الحالة 408" أو "خطأ في الشبكة"؟

تتيح لك خيار انتهاء المهلة في Axios تحديد المدة التي يجب الانتظار فيها لاستجابة الخادم قبل إصدار خطأ، مما يمنع تطبيقك من التعليق إلى ما لا نهاية.

ومع ذلك، فإن اختيار القيمة الصحيحة لانتهاء المهلة ومعالجة انتهاء المهلة بطريقة سلسة يمكن أن يكون تحديًا. هنا يأتي دور Apidog، وهي منصة لاختبار واجهات برمجة التطبيقات وتصحيحها، حيث يمكنها اختبار وتصحيح طلبات axios الخاصة بك مع انتهاء المهلة.

💡
اختبر وصحح طلبات axios الخاصة بك مع انتهاء المهلة باستخدام Apidog، وهي منصة متكاملة لتصميم API وتصحيح الأخطاء والتطوير والمحاكاة والاختبار مجانًا.
button

ما هو انتهاء مهلة Axios ولماذا هو مهم

قبل أن نتطرق إلى تفاصيل كيفية معالجة انتهاء مهلة axios، دعونا نفهم أولاً ما هو ولماذا هو مهم.

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

عند تعيين قيمة انتهاء المهلة، يمكنك إخبار axios بالتخلي عن الطلب بعد فترة معينة من الوقت، وإصدار خطأ. بهذه الطريقة، يمكنك معالجة الخطأ في شفراتك، وتقديم خيار احتياطي أو بديل للمستخدم، مثل:

من خلال معالجة الخطأ، يمكنك تحسين تجربة المستخدم، وتوفير الموارد، ومنع المخاطر الأمنية. يمكنك أيضًا تجنب الطلبات غير الضرورية أو المكررة، وتحسين أداء تطبيقك.

ولكن كيف يمكنك تعيين قيمة انتهاء المهلة في axios؟ وكيف تتعامل مع الخطأ عندما يحدث؟ هذا ما سنراه في الأقسام التالية.

كيفية تعيين خيار انتهاء المهلة في Axios

تعيين خيار انتهاء المهلة في axios سهل جدًا ومباشر. يمكنك تحديد قيمة انتهاء المهلة بالمللي ثانية كخاصية من كائن التكوين الذي تمرره إلى طريقة طلب axios، مثل axios.get، axios.post، axios.put، إلخ.

على سبيل المثال، إذا كنت ترغب في تعيين قيمة انتهاء المهلة إلى 5 ثوانٍ (5000 مللي ثانية) لطلب GET إلى نقطة نهاية API معينة، يمكنك كتابة شيء مثل هذا:

axios.get('/api/users', {timeout: 5000})
  .then(response => {
    // معالجة النجاح
  })
  .catch(error => {
    // معالجة الخطأ
  });

بدلاً من ذلك، يمكنك أيضًا تعيين قيمة انتهاء المهلة عالميًا لجميع طلبات axios، باستخدام كائن axios.defaults. على سبيل المثال، إذا كنت ترغب في تعيين قيمة انتهاء المهلة إلى 5 ثوانٍ لجميع طلبات axios، يمكنك كتابة شيء مثل هذا:

axios.defaults.timeout = 5000;

يمكنك أيضًا إنشاء مثيل axios بقيمة انتهاء مهلة مخصصة، واستخدامه لطلبات معينة. على سبيل المثال، إذا كنت ترغب في إنشاء مثيل axios بقيمة انتهاء مهلة قدرها 10 ثوانٍ، واستخدامه لبعض الطلبات، يمكنك كتابة شيء مثل هذا:

const instance = axios.create({timeout: 10000});

instance.get('/api/products')
  .then(response => {
    // معالجة النجاح
  })
  .catch(error => {
    // معالجة الخطأ
  });

كما ترى، تعيين خيار انتهاء المهلة في axios بسيط للغاية ومرن. يمكنك تخصيصه لطلبات مختلفة، حسب احتياجاتك وتفضيلاتك.

لكن كيف تختار القيمة الصحيحة لإنتهاء المهلة لطلباتك؟ كم من الوقت يجب أن تنتظر للحصول على استجابة قبل أن تتخلى عنها؟ لا يوجد إجابة محددة لهذا السؤال، حيث يعتمد على العديد من العوامل، مثل:

لكن ماذا يحدث عندما يتم الوصول إلى قيمة انتهاء المهلة، ويتم إلغاء الطلب؟ كيف يمكنك التقاط ومعالجة خطأ انتهاء المهلة في axios؟ هذا ما سنراه في القسم التالي.

كيفية التقاط ومعالجة خطأ انتهاء المهلة في Axios

عندما يتم الوصول إلى قيمة انتهاء المهلة، ويتم إلغاء الطلب، ستلقي axios بخطأ يمكنك التقاطه ومعالجته في شفراتك. هناك طرق مختلفة لالتقاط ومعالجة الخطأ، حسب كيفية كتابة طلبات axios الخاصة بك، مثل استخدام try/catch، أو الوعود، أو async/await.

استخدام try/catch

إذا كنت تستخدم try/catch لكتابة طلبات axios الخاصة بك، يمكنك التقاط الخطأ في كتلة catch، ومعالجته وفقًا لذلك. على سبيل المثال، إذا كنت تستخدم كتلة try/catch لإجراء طلب GET إلى نقطة نهاية API معينة، مع قيمة انتهاء مهلة 5 ثوانٍ، يمكنك كتابة شيء مثل هذا:

try {
  const response = await axios.get('/api/users', {timeout: 5000});
  // معالجة النجاح
} catch (error) {
  // معالجة الخطأ
}

ولكن كيف تعرف ما إذا كان الخطأ هو خطأ انتهاء مهلة، أم نوع آخر من الأخطاء؟ إحدى الطرق للتحقق هي استخدام خاصية error.code، والتي ستحدد بـ 'ECONNABORTED' إذا كان الخطأ هو خطأ انتهاء المهلة. على سبيل المثال، يمكنك كتابة شيء مثل هذا:

try {
  const response = await axios.get('/api/users', {timeout: 5000});
  // معالجة النجاح
} catch (error) {
  // معالجة الخطأ
  if (error.code === 'ECONNABORTED') {
    // معالجة خطأ انتهاء المهلة
    console.error('انتهت مهلة الطلب');
    // افعل شيئًا آخر، مثل عرض رسالة خطأ أو زر إعادة المحاولة
  } else {
    // معالجة أنواع أخرى من الأخطاء
    console.error(error.message);
    // افعل شيئًا آخر، مثل تسجيل الخطأ أو إرسال إشعار
  }
}

كما ترى، فإن استخدام try/catch هو وسيلة بسيطة وفعالة لالتقاط ومعالجة خطأ انتهاء المهلة في axios. ومع ذلك، فإنه يتطلب استخدام بناء async/await، والذي قد لا تدعمه بعض المتصفحات أو البيئات. إذا كنت ترغب في استخدام طريقة أكثر توافقًا وتقليدية لكتابة طلبات axios الخاصة بك، يمكنك استخدام الوعود بدلاً من ذلك.

استخدام الوعود

إذا كنت تستخدم الوعود لكتابة طلبات axios الخاصة بك، يمكنك التقاط الخطأ في طريقة catch، ومعالجته وفقًا لذلك. على سبيل المثال، إذا كنت تستخدم سلسلة من الوعود لإجراء طلب GET إلى نقطة نهاية API معينة، مع قيمة انتهاء مهلة 5 ثوانٍ، يمكنك كتابة شيء مثل هذا:

axios.get('/api/users', {timeout: 5000})
  .then(response => {
    // معالجة النجاح
  })
  .catch(error => {
    // معالجة الخطأ
  });

للتحقق مما إذا كان الخطأ هو خطأ انتهاء مهلة، يمكنك استخدام نفس خاصية error.code كما في السابق، ومقارنتها بـ 'ECONNABORTED'. على سبيل المثال، يمكنك كتابة شيء مثل هذا:

axios.get('/api/users', {timeout: 5000})
  .then(response => {
    // معالجة النجاح
  })
  .catch(error => {
    // معالجة الخطأ
    if (error.code === 'ECONNABORTED') {
      // معالجة خطأ انتهاء المهلة
      console.error('انتهت مهلة الطلب');
      // افعل شيئًا آخر، مثل عرض رسالة خطأ أو زر إعادة المحاولة
    } else {
      // معالجة أنواع أخرى من الأخطاء
      console.error(error.message);
      // افعل شيئًا آخر، مثل تسجيل الخطأ أو إرسال إشعار
    }
  });

كما ترى، فإن استخدام الوعود هو طريقة سهلة ومألوفة أخرى لالتقاط ومعالجة خطأ انتهاء المهلة في axios. ومع ذلك، قد ينتج عن ذلك شيفرة متداخلة ومطولة، خاصة إذا كان لديك طلبات axios متعددة في تسلسل أو بالتوازي. إذا كنت ترغب في استخدام طريقة أكثر حداثة وأنيقة لكتابة طلبات axios الخاصة بك، يمكنك استخدام async/await بدلاً من ذلك.

استخدام async/await

إذا كنت تستخدم async/await لكتابة طلبات axios الخاصة بك، يمكنك التقاط الخطأ في كتلة try/catch، ومعالجته وفقًا لذلك. هذه هي نفس الطريقة التي رأيناها سابقًا، ولكنني سأكررها هنا للاكتمال. على سبيل المثال، إذا كنت تستخدم دالة async لإجراء طلب GET إلى نقطة نهاية API معينة، مع قيمة انتهاء مهلة قدرها 5 ثوانٍ، يمكنك كتابة شيء مثل هذا:

async function getUsers() {
  try {
    const response = await axios.get('/api/users', {timeout: 5000});
    // معالجة النجاح
  } catch (error) {
    // معالجة الخطأ
    if (error.code === 'ECONNABORTED') {
      // معالجة خطأ انتهاء المهلة
      console.error('انتهت مهلة الطلب');
      // افعل شيئًا آخر، مثل عرض رسالة خطأ أو زر إعادة المحاولة
    } else {
      // معالجة أنواع أخرى من الأخطاء
      console.error(error.message);
      // افعل شيئًا آخر، مثل تسجيل الخطأ أو إرسال إشعار
    }
  }
}

كما ترى، فإن استخدام async/await هو طريقة نظيفة وموجزة لالتقاط ومعالجة خطأ انتهاء المهلة في axios. ومع ذلك، فإنه يتطلب استخدام بناء async/await، والذي قد لا تدعمه بعض المتصفحات أو البيئات. إذا كنت ترغب في استخدام طريقة أكثر توافقًا وتقليدية لكتابة طلبات axios الخاصة بك، يمكنك استخدام الوعود بدلاً من ذلك.

هذه هي الثلاث طرق الرئيسية لالتقاط ومعالجة خطأ انتهاء المهلة في axios، باستخدام try/catch أو الوعود أو async/await. يمكنك اختيار الطريقة التي تناسب تفضيلاتك وحالتك بشكل أفضل، واستخدامها بانتظام في شيفرتك.

لكن كيف يمكنك اختبار وتصحيح طلبات axios الخاصة بك مع انتهاء المهلة؟

كيفية اختبار وتصحيح طلبات axios الخاصة بك مع انتهاء المهلة باستخدام Apidog

Apidog هي منصة قوية وسهلة الاستخدام تساعدك على تصميم، وتصحيح، وتطوير، ومحاكاة، واختبار واجهات برمجة التطبيقات الخاصة بك. لديها العديد من الميزات والأدوات التي تجعلها حلاً شاملًا لجميع احتياجات API الخاصة بك.

button

مع Apidog، يمكنك بسهولة اختبار وتصحيح طلبات axios الخاصة بك مع انتهاء المهلة.

الخاتمة

في هذه التدوينة، تعلمنا كيفية معالجة انتهاء مهلة axios مثل المحترفين، باستخدام أفضل الممارسات والأدوات المتاحة. لقد رأينا كيف يمكننا:

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

button

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات