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

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

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

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

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

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

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

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

चलिए, इस गड़बड़ी के मैसेज को तुरंत डिकोड करते हैं:

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

faultstring में, गड़बड़ी की जानकारी होती है. गड़बड़ी की जानकारी देने वाली स्ट्रिंग में आम तौर पर, गड़बड़ी की वजह से हुई खास समस्या को ढूंढने में मदद करने के लिए, कुछ जानकारी होती है. जैसे, नीति का नाम, ऐसे वैरिएबल का नाम जिसे ठीक नहीं किया गया है या गड़बड़ी की वजह बनी कोई भी जानकारी. उदाहरण के लिए, ऊपर दिए गए गड़बड़ी के मैसेज में, "foo", नीति में रेफ़र किए गए ऐसे मैसेज वैरिएबल का नाम है जिसे ठीक नहीं किया गया है. साथ ही, "ParseJsonResponse" उस नीति का नाम है जिसकी वजह से गड़बड़ी हुई है.

नीति से जुड़ी गड़बड़ियों के लिए खास वैरिएबल

नीति से जुड़ी गड़बड़ी ट्रिगर होने पर, गड़बड़ी से जुड़े कुछ फ़्लो वैरिएबल अपने-आप पॉप्युलेट हो जाते हैं. ये वैरिएबल, गड़बड़ी को ठीक करने में काफ़ी मददगार होते हैं. गड़बड़ियों को मैनेज करना विषय में बताया गया है कि आम तौर पर, सिस्टम से जनरेट हुई नीति से जुड़ी गड़बड़ियों को ट्रैप किया जाता है और इसके बाद कोई कार्रवाई की जाती है. जैसे, गड़बड़ी का कस्टम रिस्पॉन्स बनाना. उदाहरण के लिए, सुरक्षा की वजहों से, ऐसा हो सकता है कि आप क्लाइंट को उन गड़बड़ियों और स्टेटस कोड को देखने से रोकना चाहें जो Edge दिखती है.

fault.name वैरिएबल

जब कोई नीति गड़बड़ी दिखाती है, तो वह गड़बड़ी कोड के error_name हिस्से पर फ़्लो वैरिएबल fault.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 फ़्लैग की जांच करने वाली कंडीशन बनाने का तरीका बताया गया है. इस वैरिएबल की सही तरीके से जांच करने के लिए, आपको दो चीज़ों के बारे में जानना होगा:

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

इसे समझाने के लिए, यहां गड़बड़ी के नियम का एक और उदाहरण दिया गया है. बाहरी स्थिति में [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 वैरिएबल के बारे में जानकारी

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

error.[error_component] = [value]

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

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

और

error.status.code = "500"

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

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