Express.js / دليل حلول تحريري

تشخيص الجسم غير المعرف وشكل الاستعلام وانتقال المسارات

حدد هل اختفى الإدخال في المطابقة أو انطباق المحلل أو تحقق المجال قبل تغيير كل العناوين.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى

قاعدة معرفة للقراءة فقط · بلا تعليقات عامة

تعرّف على الأعراض

قد يرى المعالج req.body غير معرفة أو تستقبل خدمة سلسلة مصفوفة أو يلتقط مسار ثابت كمعرف أو يفشل شامل قديم بعد الترقية. تختلف العقود؛ احفظ الطريقة ونمطاً آمناً والنوع والإصدارات مع طلب اصطناعي منقح.

افهم الأسباب المحتملة

  • قد لا يطابق المحلل النوع أو النطاق، أو يستهلك وسيط سابق التدفق، أو يسبق مسار واسع المحدد، أو تختلف قواعد الخامس. لا تثبت صياغة JSON الصحيحة مناسبة أعضائها لعقد المجال.

تأكد من وصول الطلب للمسار المقصود

افحص الطريقة والبادئة وترتيب الثابت والأسماء قبل الجسم. قد يلتقط /courses/:id كلمة search إذا سبقها. قد يحتاج الابن mergeParams لقيمة مستأجر الأب وتبقى غير موثوقة. في الخامس استخدم المحرف المسمى والأقواس للاختياري واختبر شمول الجذر. قارن العينات بعقد المسارات بدلاً من توسيع الشامل لكل طلب. ميز داخلياً بين عدم مطابقة مسار وغياب كائن، فالأولى لا تصل أصلاً إلى البحث الذي قد تحاول إصلاحه.

افحص النوع والموضع ومسؤولية الجسم الخام

تعمل express.json وفق مطابقتها ولا تتحقق من أعضاء العمل. قد يبقى الجسم غير معرفة في الخامس؛ لا تستبدله بـ{} قبل فهم السبب. قارن النوع والوجود والحدود والترتيب. قد يحتاج رد موقع بايتاته الأصلية فيستهلكها محلل عام قبل المتحقق. اختر تحليلاً بنطاق وارفض غير المدعوم وفق العقد. لا تعطل كل حدود الحجم أو تسجل الحمولة الخاصة لإظهار نجاح المحلل. يحل ضبط انطباقه السبب، بينما إخفاء undefined قد يحول إدخالاً ناقصاً إلى كتابة مختلفة.

افحص شكل القيمة قبل التحويل

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

javascript فحص محلي كامل لقيمة الاستعلام
function pageSize(value) {
  if (typeof value !== "string" || !/^[1-9][0-9]*$/.test(value)) return null;
  const n=Number(value); return Number.isInteger(n) && n <= 20 ? n : null;
}
console.assert(pageSize("10") === 10);
console.assert(pageSize(["10","20"]) === null);
console.assert(pageSize("10rows") === null);
console.assert(pageSize("21") === null);

تنجح سلسلة واحدة وترفض المصفوفة والعدد الجزئي والزائد دون تشغيل محلل Express.

أصلح الحد المعطل واحتفظ بعينته

انقل المحلل أو قيده عندما يثبت غياب انطباقه، وغير الترتيب لتعارض مثبت. أعد الصيغ القديمة وفق الدليل باختبارات محددة. احفظ حالات المعرف وnull والغياب والمجهول ولا تضعف العقد لسلاسل عشوائية. أكد الكائن الطبيعي للخدمة وغياب كتابة الرفض. يشغل الدليل حساب حجم الصفحة فقط؛ لم يشغل قواعد المسار أو استهلاك التدفق أو خطأ JSON أو الترويسات. تبقى تلك الفحوص لدمج مأذون، مع العينة القديمة لحماية السلوك المطلوب من رجوع الخطأ.

تحقق من نجاح الإصلاح

تحقق من الصحيح وسلبيات الطريقة والنوع والغياب وJSON والشكل وقيم المجال مستقلة. أكد المعالج المقصود وعدم كتابة الرفض؛ لا يكفي نجاح التحليل وحده.

امنع تكرار المشكلة

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

المراجع الرسمية