<p>لا يجب أن تلقي المحاور استجابات HTTP صالحة</p>

تم إنشاؤها على ٩ أكتوبر ٢٠١٦  ·  3تعليقات  ·  مصدر: axios/axios

لماذا تقدم أكسيوس status < 200 || status >= 300 ؟ انظر defaults.js # L84
خطأ HTTP 500 يعني أننا وصلنا إلى الخادم وحتى حصلنا على استجابة صالحة باستخدام بروتوكول http.

من وجهة نظر التطبيق ، يمكن اعتبار خطأ HTTP 500 استثناءً ، ولكن هذا على مستوى تجريد مختلف وغير مرتبط تمامًا بتجريد HTTP.

من أجل التوافق مع مواصفات الجلب القادمة ، أعتقد أنه من المهم ألا يتم طرح المحاور في حالة استجابات HTTP الصحيحة.

تحدد مواصفات الجلب خاصية response.ok ، حتى يتمكن مطور التطبيق من التعرف بسهولة على نتيجة عملية HTTP ، أعتقد أن أسلوبًا مشابهًا قد يكون مفيدًا للمحاور.

يرجى الاطلاع هنا لمزيد من التفاصيل حول مواصفات الجلب:
https://fetch.spec.whatwg.org/#dom -response-ok
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

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

صحيح ، لكن وجهة نظري هي أن هذا لا ينبغي أن يكون الافتراضي. في الحقيقة هذا لا يجب أن يكون حتى شكلي.

ال 3 كومينتر

أعتقد أنه يمكنك استخدام خيار تكوين validateStatus لحل المشكلة دائمًا عندما يكون هناك استجابة للخادم. من المستندات:

// `validateStatus` defines whether to resolve or reject the promise for a given
// HTTP response status code. If `validateStatus` returns `true` (or is set to `null`
// or `undefined`), the promise will be resolved; otherwise, the promise will be
// rejected.
validateStatus: function (status) {
  return status >= 200 && status < 300; // default
}

صحيح ، لكن وجهة نظري هي أن هذا لا ينبغي أن يكون الافتراضي. في الحقيقة هذا لا يجب أن يكون حتى شكلي.

نحن نتفهم قلقك ولكن Axios لا يعني استبدال fetch ولا تقليد سلوكه. نحن لا نستخدمه حتى كمحول لإجراء المكالمات (نتمسك بـ XHR في الوقت الحالي).

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

fetch(url).then(verifyStatus).then(...);

لهذا السبب توجد حزم مثل fetch-check-http-status .

نريد تجنب هذا الهيكل الذي يتكرر كثيرًا. إذا كنت ترغب في حل أي استجابة صالحة من الخادم ، فيمكنك دائمًا تعيين validateStatus: false .

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات