नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी

यह Apigee Edge के दस्तावेज़ हैं.
पर जाएं Apigee X दस्तावेज़.
info

इस विषय में, नीति से जुड़ी गड़बड़ियों के स्ट्रक्चर और फ़्लो वैरिएबल के उन टाइप के बारे में बताया गया है जो नीति से जुड़ी गड़बड़ी होने पर सेट किए जाते हैं. अगर प्रॉक्सी के लिए, गड़बड़ी ठीक करने की सुविधा डिज़ाइन और लागू की जा रही है, तो यह जानकारी आपके लिए ज़रूरी है.

इस विषय में यह माना गया है कि आपको Edge में गड़बड़ी ठीक करने की सुविधा के काम करने के तरीके के बारे में सामान्य जानकारी है. साथ ही, आपको यह भी पता है कि फ़ॉल्ट रूल क्या होते हैं. अगर आपको इसकी समीक्षा करनी है, तो गड़बड़ियां ठीक करना लेख पढ़ें. यहां दी गई जानकारी, नीति से जुड़ी गड़बड़ी के रेफ़रंस को समझने और उसका इस्तेमाल करने में भी आपकी मदद करेगी.

नीति से जुड़ी गड़बड़ी के डिफ़ॉल्ट जवाब के बारे में जानकारी

जब किसी नीति में गड़बड़ी होती है, तो Edge तुरंत गड़बड़ी वाले फ़्लो में चला जाता है और गड़बड़ी का मैसेज जनरेट करता है. सिस्टम से जनरेट किया गया यह मैसेज, JSON ऑब्जेक्ट होता है. इसमें दो तरह की जानकारी शामिल होती है: एक errorcode और एक faultstring.

उदाहरण के लिए:

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

आइए, इस गड़बड़ी के मैसेज को जल्दी से डीकोड करें:

errorcode में एक prefix और एक error नाम होता है. यह इस तरह दिखता है: [prefix].[error_name]. ऊपर दिए गए उदाहरण में "steps.extractvariables" प्रीफ़िक्स है और SourceMessageNotAvailable गड़बड़ी का नाम है. प्रीफ़िक्स से पता चलता है कि किस तरह की नीति की वजह से गड़बड़ी हुई है. ऊपर दिए गए उदाहरण में, आपको पता चलता है कि गड़बड़ी, 'वैरिएबल एक्सट्रैक्ट करें' नीति की वजह से हुई है. साथ ही, गड़बड़ी का नाम SourceMessageNotAvailable है.

faultstring में, गड़बड़ी की जानकारी होती है. फ़ॉल्ट स्ट्रिंग में आम तौर पर, ऐसे सुराग शामिल होते हैं जिनसे आपको उस खास समस्या का पता लगाने में मदद मिलती है जिसकी वजह से गड़बड़ी हुई है. जैसे, नीति का नाम, अनसुलझे वैरिएबल का नाम या गड़बड़ी की वजह बनने वाली कोई भी चीज़. उदाहरण के लिए, ऊपर दिए गए गड़बड़ी के मैसेज में, "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 वैरिएबल हमेशा गड़बड़ी के नाम पर सेट होता है.

The [prefix].[policy_name].failed वैरिएबल

fault.name के अलावा, डेवलपर आम तौर पर [prefix].[policy_name].failed फ़्लैग की भी जांच करते हैं. यह फ़्लैग, नीति के लागू होने पर सही या गलत पर सेट होता है. फ़ॉल्ट रूल में, आपको यह देखना होगा कि यह सही कब है. इसका मतलब है कि आपको यह देखना होगा कि कोई गड़बड़ी हुई है या नहीं. [prefix].[policy_name].failed फ़्लैग की जांच करने वाली शर्त बनाने का तरीका यहां बताया गया है. इस वैरिएबल की सही तरीके से जांच करने के लिए, आपको दो चीज़ों के बारे में पता होना चाहिए:

  • उस नीति का नाम जिसकी जांच की जा रही है. यह नीति के नाम एट्रिब्यूट की वैल्यू होती है, न कि डिसप्ले नेम. यह एट्रिब्यूट, नीति परिभाषा के XML में हमेशा शामिल होता है.
  • एक प्रीफ़िक्स जो उस नीति के टाइप के लिए खास होता है जिसकी जांच की जा रही है. (हम आपको प्रीफ़िक्स ढूंढने का तरीका नीचे बताएंगे.)

इसे समझने के लिए, यहां एक और फ़ॉल्ट रूल का उदाहरण दिया गया है. बाहरी शर्त में देखें कि [prefix].[policy_name].failed वैरिएबल का नाम कैसे बनता है. इस मामले में, प्रीफ़िक्स है extractvariables और नीति का नाम है ParseJsonResponse. इस मामले में, फ़ॉल्ट रूल सिर्फ़ तब लागू होगा, जब यह वैरिएबल सही होगा. यहां एक सलाह दी गई है: फ़ॉल्ट रूल में कई चरण हो सकते हैं. इसलिए, इस पैटर्न का इस्तेमाल करके, फ़ॉल्ट रूल को ब्लॉक में व्यवस्थित किया जा सकता है.

<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 वैरिएबल के बारे में जानकारी

The error वैरिएबल, सिर्फ़ प्रॉक्सी के गड़बड़ी वाले फ़्लो में उपलब्ध होता है. गड़बड़ी वाले वैरिएबल से काम की जानकारी पाई जा सकती है. जैसे, गड़बड़ी का मैसेज, स्टेटस कोड, वजह बताने वाला वाक्यांश वगैरह. गड़बड़ी वाले वैरिएबल के लिए फ़ॉर्मैटिंग पैटर्न यह है:

error.[error_component] = [value]

उदाहरण के लिए:

error.message = "request message is not available for ExtractVariable: ParseJsonResponse"

और

error.status.code = "500"

message वैरिएबल भी गड़बड़ी वाले फ़्लो में उपलब्ध होता है. इसका इस्तेमाल, error वैरिएबल की तरह ही किया जा सकता है. मैसेज वैरिएबल खास होता है, क्योंकि यह कॉन्टेक्चुअल होता है. अनुरोध वाले फ़्लो में, यह अनुरोध वाले वैरिएबल की तरह काम करता है. वहीं, जवाब वाले फ़्लो में, इसका इस्तेमाल जवाब की वैल्यू पाने/सेट करने के लिए किया जा सकता है. ज़्यादा जानने के लिए, मैसेज वैरिएबल के इस्तेमाल के उदाहरण देखें.

Edge के सभी वैरिएबल के बारे में जानकारी पाने के लिए, वैरिएबल का रेफ़रंस देखें. इसमें error और message वैरिएबल भी शामिल हैं.