يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات
Apigee X. المعلومات
تتيح سياسة KeepFault لمطوّري واجهة برمجة التطبيقات بدء مسار خطأ وضبط متغيرات الخطأ في رسالة نص الاستجابة وضبط رموز حالة الاستجابة المناسبة. يمكنك أيضًا استخدام سياسة PrepareFault لضبط متغيّرات التدفق المتعلّقة بالخطأ، مثل fault.name
وfault.type
وfault.category
. بما أنّ هذه المتغيرات تظهر في بيانات الإحصاءات وسجلّات وصول جهاز التوجيه
المستخدمة في تصحيح الأخطاء، من المهم تحديد الخطأ بدقة.
يمكنك استخدام سياسة PrepareFault للتعامل مع حالات معيّنة على أنّها أخطاء، حتى إذا لم يحدث خطأ فعلي
في سياسة أخرى أو في الخادم الخلفية للخادم الوكيل لواجهة برمجة التطبيقات. على سبيل المثال، إذا كنت تريد من الخادم الوكيل إرسال رسالة خطأ مخصّصة إلى التطبيق العميل عند احتواء نص استجابة الخلفية على السلسلة unavailable
، يمكنك عندها استدعاء سياسة riseFault كما هو موضّح في مقتطف الرمز أدناه:
<!-- /antipatterns/examples/raise-fault-conditions-1.xml --> <TargetEndpoint name="default"> ... <Response> <Step> <Name>RF-Service-Unavailable</Name> <Condition>(message.content Like "*unavailable*")</Condition> </Step> </Response> ...
يظهر اسم سياسة riseFault ضمن fault.name
في
مراقبة واجهة برمجة التطبيقات وبالاسم x_apigee_fault_policy
في سجلات وصول "إحصاءات Google" وجهاز التوجيه.
ويساعد ذلك في تشخيص سبب الخطأ بسهولة.
مضادة للأنماط
استخدام سياسة GrowFault ضمن FaultRules بعد حدوث خطأ في سياسة أخرى
اطّلِع على المثال الموضَّح أدناه، حيث تعذّرت سياسة OAuthV2 في تدفق الخادم الوكيل لواجهة برمجة التطبيقات مع ظهور خطأ InvalidAccessToken
. عند تعذُّر إكمال العملية، سيضبط Edge fault.name
على أنّه InvalidAccessToken
، ويدخل في
مسار الخطأ، وينفّذ أي قواعد FaultRules محددة. في FaultRequest، هناك سياسة ReceivedFault RaiseFault
وترسل استجابة مخصّصة للخطأ كلما حدث خطأ InvalidAccessToken
. في المقابل، عند استخدام سياسة AcceleratedFault في FaultRule، يتم استبدال المتغيّر fault.name
ويؤدي إلى إخفاء السبب الحقيقي للخطأ.
<!-- /antipatterns/examples/raise-fault-conditions-2.xml --> <FaultRules> <FaultRule name="generic_raisefault"> <Step> <Name>RaiseFault</Name> <Condition>(fault.name equals "invalid_access_token") or (fault.name equals "InvalidAccessToken")</Condition> </Step> </FaultRule> </FaultRules>
استخدام سياسة riseFault في FaultRule في جميع الشروط
في المثال أدناه، يتم تنفيذ سياسة DrawFault المسماة RaiseFault
إذا لم تكن قيمة fault.name
RaiseFault
:
<!-- /antipatterns/examples/raise-fault-conditions-3.xml --> <FaultRules> <FaultRule name="fault_rule"> .... <Step> <Name>RaiseFault</Name> <Condition>!(fault.name equals "RaiseFault")</Condition> </Step> </FaultRule> </FaultRules>
كما هو الحال في السيناريو الأول، يتم استبدال متغيّرات الأخطاء الرئيسية fault.name
وfault.code
وfault.policy
باسم سياسة ClaimFault. ويجعل هذا السلوك
من المستحيل تقريبًا تحديد السياسة التي تسببت في حدوث هذا الخطأ بدون الوصول إلى
ملف تتبُّع يعرض المشكلة أو إعادة إظهارها.
استخدام سياسة riseFault لعرض استجابة HTTP 2xx خارج تدفق الخطأ
في المثال أدناه، يتم تنفيذ سياسة DrawFault المسماة HandleOptionsRequest
عندما يكون فعل الطلب هو OPTIONS
:
<!-- /antipatterns/examples/raise-fault-conditions-4.xml --> <PreFlow name="PreFlow"> <Request> … <Step> <Name>HandleOptionsRequest</Name> <Condition>(request.verb Equals "OPTIONS")</Condition> </Step> … </PreFlow>
والغرض من ذلك هو عرض الرد على عميل واجهة برمجة التطبيقات على الفور بدون معالجة سياسات أخرى. ومع ذلك، سيؤدي ذلك إلى الحصول على بيانات إحصائية مضلِّلة لأنّ متغيرات الأخطاء ستحتوي على اسم سياسة AcceleratedFault، ما يزيد من صعوبة تصحيح أخطاء الخادم الوكيل. والطريقة الصحيحة لتنفيذ السلوك المطلوب هي استخدام المسارات ذات الشروط الخاصة، كما هو موضّح في إضافة دعم سياسة مشاركة الموارد متعددة المصادر (CORS).
التأثير
يؤدي استخدام سياسة ClaimFault كما هو موضّح أعلاه إلى استبدال متغيّرات الأخطاء الرئيسية باسم سياسة ClaimFault بدلاً من اسم السياسة التي يتعذّر فيها اجتياز المراجعة. في سجلّات "إحصاءات Google" وNGINX Access،
يتم استبدال المتغيّرَين x_apigee_fault_code
وx_apigee_fault_policy
. في مراقبة واجهة برمجة التطبيقات، يتم استبدال Fault Code
وFault Policy
. يؤدي هذا السلوك إلى صعوبة تحديد المشاكل وحلّها وتحديد السياسة التي تتسبب في الخطأ.
في لقطة الشاشة أدناه من أداة مراقبة واجهة برمجة التطبيقات،
يمكنك ملاحظته أنّه تم استبدال "رمز الخطأ" و"سياسة الخطأ" بقيم RaiseFault
عامة،
ما يجعل من المستحيل تحديد السبب الرئيسي للتعذُّر من خلال السجلّات:
أفضل الممارسات
عندما تصدر سياسة Edge خطأً وتريد تخصيص رسالة الاستجابة للخطأ، استخدِم سياسات AssignMessage أو JavaScript بدلاً من سياسة ClaimFault.
يجب استخدام سياسة riseFault في مسار خالٍ من الأخطاء. وهذا يعني أنه يمكنك استخدام تَطْبِيقْ riseFault ل ل ل د مُوَظ ف ي ا ل ى مُ طِ ر ا ص على سبيل المثال، يمكنك استخدام سياسة ClaimFault للإشارة إلى أنّ معلَمات الإدخال الإلزامية غير متوفّرة أو بنية غير صحيحة.
يمكنك أيضًا استخدام DrawFault ضمن قاعدة الخطأ إذا أردت رصد خطأ أثناء معالجة خطأ. على سبيل المثال، يمكن أن يتسبب معالج الأخطاء نفسه في حدوث خطأ تريد الإشارة إليه باستخدام riseFault