ما تحتاج إلى معرفته عن أخطاء السياسة

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

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

يفترض هذا الموضوع أن لديك فهمًا عامًا لكيفية عمل معالجة الأخطاء في Edge، أنك تعرف ما هي قواعد الخطأ. إذا كنت بحاجة إلى مراجعة، يمكنك الاطّلاع على معالجة الأخطاء. ستساعدك المعلومات الواردة هنا أيضًا على التنقُّل في مرجع أخطاء السياسة واستخدامه.

معلومات عن الاستجابة لأخطاء السياسة التلقائية

عندما تعرض السياسة خطأً، يدخل Edge في مسار الخطأ فورًا ويعرض رسالة خطأ . وهذه الرسالة التي ينشئها النظام عبارة عن كائن JSON يشتمل على وحدتين من المعلومات: خطأ وسلسلة خطأ.

على سبيل المثال:

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"foo message is not available for ExtractVariable: ParseJsonResponse"
   }
}

لنحل بسرعة رسالة الخطأ هذه:

يتكون رمز الخطأ من بادئة وخطأ على النحو التالي: [prefix].[error_name]. في المثال أعلاه "steps.extractvariables" هي البادئة وSourceMessageNotAvailable هو اسم الخطأ. وتخبرك البادئة بنوع السياسة التي أدت إلى ظهور الخطأ. في ما سبق يمكنك معرفة أن سياسة استخراج المتغيّرات قد أدّت إلى حدوث الخطأ وأنّ اسم الخطأ SourceMessageNotAvailable

تحتوي سلسلة الخطأ على وصف للخطأ. سلسلة الخطأ دليلاً لمساعدتك في العثور على مشكلة محددة تسببت في الخطأ، مثل أو اسم السياسة أو اسم متغير لم يتم حله أو أي شيء ساهم في الخطأ. بالنسبة المثال أعلاه، "foo" هو اسم حل لم يتم حله متغيّر الرسالة المُشار إليه في السياسة و"ParseJsonResponse" هو اسم السياسة التي تسببت في حدوث الخطأ.

المتغيّرات الخاصة بأخطاء السياسات

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

الـ fault.name المتغيّر

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

في ما يلي مثال على قاعدة خطأ تختبر قيمة fault.name:

<faultrule name="VariableOfNonMsgType"<>/faultrule><FaultRule name="Source Message Not Available Fault">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
</FaultRule>

يُرجى تذكُّر أنّه عندما تؤدي السياسة إلى حدوث خطأ، يتم عرض fault.name يتم دائمًا تعيين المتغير على اسم الخطأ.

المتغيّر [prefix].[policy_name].failed

إلى جانب fault.name، هناك متغيّر آخر يتحقّق منه المطوّرون عادةً، وهو علامة [prefix].[policy_name].failed، التي يتم ضبطها على "صواب" أو "خطأ" عند تنفيذ السياسة. في قواعد الخطأ، ستحتاج إلى التحقق لمعرفة متى تكون صحيحة -- أي للتحقق من حدوث أي خطأ. وإليك كيفية إنشاء شرط شرطي يتحقق علم واحد ([prefix].[policy_name].failed) للتحقق من هذا المتغير بشكل صحيح، تحتاج إلى تعرف شيئين:

  • اسم السياسة التي تطّلِع عليها. تمثل هذه القيمة قيمة لسمة الاسم، وليس الاسم المعروض. يتم تضمين هذه السمة دائمًا في السياسة. الخاص بتعريف XML.
  • بادئة خاصة بنوع السياسة التي تتحقق منها. (سنضيف اشرح كيفية العثور على البادئة أدناه).

إليك مثال آخر على قاعدة الخطأ للتوضيح. لاحظ في الحالة الخارجية كيف تم تكوين اسم المتغير [prefix].[policy_name].failed. في هذه الحالة، تكون البادئة extractvariables واسم السياسة هو ParseJsonResponse. في هذه الدورة، في هذه الحالة، لن يتم تنفيذ قاعدة الخطأ إلا إذا كان هذا المتغير true. وإليك نصيحة: لأن الخطأ يمكن أن تحتوي قواعد على خطوات متعددة، فإن هذا النمط يعد طريقة لطيفة لتنظيم قواعد الخطأ في مربّعات.

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition>
</FaultRule>

لمحة عن المتغيّرات error وmessage

لا يتوفّر المتغيّر error إلا في مسار الخطأ الخادم الوكيل. يمكنك الحصول على معلومات مفيدة من متغير الخطأ، مثل رسالة الخطأ والحالة والرمز وعبارة السبب وما إلى ذلك. نمط التنسيق لمتغير الخطأ هو:

error.[error_component] = [value]

على سبيل المثال:

error.message = "request message is not available for ExtractVariable: ParseJsonResponse بوصة

و

error.status.code = "500"

يتوفّر المتغير message أيضًا في مسار الخطأ ويمكن استخدامه في لأغراض مماثلة مثل المتغير error. ويكون متغير الرسالة خاصًا لأنه يكون سياقيًا. في تدفق الطلب، يتصرف كمتغير طلب، وفي تدفق الاستجابة، يمكن استخدامها للحصول على أو تعيين قيم الاستجابة. إذا كنت تريد معرفة المزيد، فراجع استخدام حالات متغيرات الرسائل.

يُرجى الاطّلاع على مرجع المتغيّرات. للحصول على معلومات حول جميع متغيرات Edge، بما في ذلك error message