Axios: 422 لم يتم رفض الرد

تم إنشاؤها على ٢٢ فبراير ٢٠١٧  ·  3تعليقات  ·  مصدر: axios/axios

لدينا مشروع يستخدم [email protected] (الترقية إلى 0.15.3 لم تحل المشكلة) في العديد من أجزاء التطبيق. في جميع أجزاء التطبيق الأخرى ، يمكننا الحصول على رموز استجابة .catch() 422. لاحظنا مؤخرًا أن هناك طلبًا واحدًا يحل وعدًا حصل على استجابة 422. في جميع الأجزاء الأخرى من طلبنا ، يتسبب 422 في رفض وعود أكسيوس.

export function addTool(name: string): Thunk {
  return (dispatch, getState) => {
    Axios
      .post<Tool>(API.current.toolsPath, { name })
      .then(resp => {
        if (resp instanceof Error) { throw resp; }
        success("Tool has been saved.", "Success");
        dispatch(addToolOk(resp.data));
      })
      .catch((e: Error) => {
        dispatch(addToolNo(e));
        error(prettyPrintApiErrors(e));
      });
  };
}

كود المصدر هنا

تمكنت من حل المشكلة عن طريق إضافة السطر التالي إلى .then() :

if (resp instanceof Error) { throw resp; }

وهو ما يعمل بشكل جيد ، لكن ما زلت في حيرة من أمري حول سبب حل هذا الرقم 422 (بدلاً من الرفض). لدينا أيضًا بعض المعترضات قيد الاستخدام ، لكنها لا تسبب أي مشكلات للطلبات الأخرى التي نقدمها.

هل هناك أي ظروف من شأنها أن تدفع أكسيوس إلى حل 422 بدلاً من رفضه؟ يرجى إعلامي إذا كنت بحاجة إلى أي معلومات أخرى.

شكرا للمساعدة!

التعليق الأكثر فائدة

بعد التحقيق في هذه المشكلة ، وجدت أنه كان في الواقع خطأ من النوع المحلي مخفيًا في عمق مكدس المكالمات في مكان ما ، مما دفعني للاعتقاد بأنها مشكلة محلية وليست مشكلة في Axios.

تحديث:

بعد إجراء بعض التحقيقات ، تمكنت من تثبيت هذا على اعتراض "رد مرفوض" سيئ.

كتبت داخل المعترض:

return error

وقمت بحل المشكلة عن طريق كتابة:

return Promise.reject(error);

ال 3 كومينتر

مؤكد. أرى أيضًا شيئًا مشابهًا عند استخدام axios بـ redux-saga حيث لا يتم التعامل مع بعض 422 على أنها وعد مرفوض.

لا تهتم ، وجدت مشكلتي. لم تكن المعترضات تنشر الأخطاء بشكل صحيح وصولاً إلى طبقة التطبيق ، d'oh! 😳

بعد التحقيق في هذه المشكلة ، وجدت أنه كان في الواقع خطأ من النوع المحلي مخفيًا في عمق مكدس المكالمات في مكان ما ، مما دفعني للاعتقاد بأنها مشكلة محلية وليست مشكلة في Axios.

تحديث:

بعد إجراء بعض التحقيقات ، تمكنت من تثبيت هذا على اعتراض "رد مرفوض" سيئ.

كتبت داخل المعترض:

return error

وقمت بحل المشكلة عن طريق كتابة:

return Promise.reject(error);
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات