Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं. info
SourceMessageNotAvailable
गड़बड़ी का कोड
steps.extractvariables.SourceMessageNotAvailable
गड़बड़ी के जवाब का मुख्य हिस्सा
{
"fault": {
"faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SourceMessageNotAvailable"
}
}
}
वजह
यह गड़बड़ी तब होती है, जब Extract Variables नीति के <Source> एलिमेंट में तय किया गया message वैरिएबल इनमें से कोई एक हो:
- स्कोप से बाहर है (उस फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
- हल नहीं किया जा सकता (तय नहीं किया गया है)
उदाहरण के लिए, यह गड़बड़ी तब होती है, जब Extract Variables नीति, अनुरोध फ़्लो में लागू होती है. हालांकि, <Source> एलिमेंट को response या error वैरिएबल पर सेट किया जाता है, जो अनुरोध फ़्लो में मौजूद नहीं होता.
संक्रमण की जांच
उस Extract Variables नीति का पता लगाएं जिसमें गड़बड़ी हुई है. साथ ही, उस वैरिएबल का नाम पता लगाएं जो उपलब्ध नहीं है. आपको ये दोनों आइटम, गड़बड़ी के जवाब के
faultstringएलिमेंट में मिल सकते हैं. उदाहरण के लिए, यहां दिए गए फ़ॉल्टस्ट्रिंग में, नीति का नामExtractVariables-1है और वैरिएबलresponseहै:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"Extract Variables नीति के फ़ेल हुए एक्सएमएल में, पुष्टि करें कि एलिमेंट में सेट किए गए वैरिएबल का नाम, फ़ॉल्ट स्ट्रिंग (ऊपर दिया गया चरण #1) में पहचाने गए वैरिएबल के नाम से मेल खाता हो. उदाहरण के लिए, नीचे दी गई Extract Variables नीति, एलिमेंट में
responseनाम का एक वैरिएबल तय करती है. यह वैरिएबल, फ़ॉल्ट स्ट्रिंग में मौजूद वैरिएबल से मेल खाता है:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>यह तय करता है कि
<Source>एलिमेंट में इस्तेमाल किया गया वैरिएबल, उस फ़्लो में तय किया गया है या नहीं जिसमें Extract Variables नीति लागू की जा रही है.अगर वैरिएबल की वैल्यू इनमें से कोई एक है:
- स्कोप से बाहर है (उस फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
- हल नहीं किया जा सकता (तय नहीं किया गया है)
तो यह गड़बड़ी की वजह है.
उदाहरण के लिए, मान लें कि ऊपर दिखाई गई Extract Variables नीति, अनुरोध फ़्लो में लागू होती है. याद रखें कि
responseवैरिएबल का इस्तेमाल, Extract Variables नीति के<Source>एलिमेंट में किया जाता है.responseवैरिएबल, सिर्फ़ रिस्पॉन्स फ़्लो में उपलब्ध है.अनुरोध के फ़्लो में
responseवैरिएबल मौजूद नहीं है. इसलिए, आपको गड़बड़ी का यह कोड मिलता है:steps.extractvariables.SourceMessageNotAvailable.
रिज़ॉल्यूशन
पक्का करें कि Extract Variables नीति के <Source> एलिमेंट में सेट किया गया वैरिएबल, उस फ़्लो में मौजूद हो जहां नीति लागू होती है.
ऊपर दिखाई गई Extract Variables नीति के उदाहरण को ठीक करने के लिए, <Source> एलिमेंट में बदलाव किया जा सकता है. इससे अनुरोध फ़्लो में मौजूद request वैरिएबल का इस्तेमाल किया जा सकेगा:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
SetVariableFailed
गड़बड़ी का कोड
steps.extractvariables.SetVariableFailed
गड़बड़ी के जवाब का मुख्य हिस्सा
{
"fault": {
"faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SetVariableFailed"
}
}
}
वजह
यह गड़बड़ी तब होती है, जब Extract Variables नीति किसी वैरिएबल के लिए वैल्यू सेट नहीं कर पाती. आम तौर पर, ऐसा तब होता है, जब नेस्ट किए गए डॉट से अलग किए गए फ़ॉर्मैट में, एक ही शब्द से शुरू होने वाले कई वैरिएबल को वैल्यू असाइन करने की कोशिश की जाती है.
उदाहरण के लिए, मान लें कि आपने किसी वैरिएबल var.color के लिए कोई वैल्यू बनाई/असाइन की है. इस मामले में, color को ऑब्जेक्ट नोड के तौर पर असाइन किया गया है. इसके बाद, अगर आपको किसी दूसरे वैरिएबल var.color.next को कोई वैल्यू असाइन करनी है, तो ऐसा नहीं हो पाएगा. इसकी वजह यह है कि color पहले से ही असाइन किया जा चुका है. साथ ही, इसे किसी दूसरे वैरिएबल को असाइन करने की अनुमति नहीं है.
संक्रमण की जांच
उस Extract Variables नीति का पता लगाएं जिसमें गड़बड़ी हुई है. साथ ही, उस वैरिएबल का नाम पता लगाएं जिसकी वैल्यू सेट नहीं की जा सकी. आपको ये दोनों आइटम, गड़बड़ी के जवाब के
faultstringएलिमेंट में मिल सकते हैं. उदाहरण के लिए, यहां दी गई गड़बड़ी की स्ट्रिंग में, नीति का नामExtractColorsहै और वैरिएबलvar.color.nextहै:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"Extract Variables नीति के फ़ेल हुए एक्सएमएल में, पुष्टि करें कि वैरिएबल का नाम, फ़ॉल्ट स्ट्रिंग (ऊपर दिया गया पहला चरण) में पहचाने गए वैरिएबल के नाम से मेल खाता हो. उदाहरण के लिए, यहां दी गई नीति में, अनुरोध क्वेरी पैरामीटर से मिली वैल्यू को
var.color.nextनाम के वैरिएबल को असाइन करने की कोशिश की गई है. यह वैरिएबल, गड़बड़ी की स्ट्रिंग में दिखने वाली वैल्यू है:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{color.next}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>'वैरिएबल निकालें' नीति के उल्लंघन की वजह से लागू नहीं हो सकी नीति में इस्तेमाल किए गए सभी वैरिएबल के नाम देखें. अगर आपने किसी ऐसे वैरिएबल को वैल्यू असाइन की है जिसका नाम, गड़बड़ी की स्ट्रिंग में पहचाने गए वैरिएबल के नाम (ऊपर दिया गया पहला चरण) से शुरू होता है, तो यह गड़बड़ी इसी वजह से हुई है.
ऊपर दिए गए उदाहरण में, Extract Variables नीति में यह ध्यान दें कि:
colorनाम वाले क्वेरी पैरामीटर की वैल्यू को सबसे पहलेvar.colorवैरिएबल को असाइन किया जाता है(ध्यान दें:var,<VariablePrefix>एलिमेंट में सेट किए गए सभी वैरिएबल का प्रीफ़िक्स है)- अगले असाइनमेंट में,
nextcolorक्वेरी पैरामीटर की वैल्यू को दूसरे वैरिएबलvar.color.nextको असाइन किया जाता है. var.colorपहले से ही असाइन किया जा चुका है. इसलिए, Extract Variables नीति, नेस्ट किए गए दूसरे वैरिएबलvar.color.nextको असाइन नहीं कर सकती. इसलिए, आपको गड़बड़ी का यह कोड मिलता है:steps.extractvariables.SetVariableFailed
रिज़ॉल्यूशन
पक्का करें कि आपके पास ऐसे कई वैरिएबल के नाम न हों जो एक ही शब्द से शुरू होते हों और डॉट से अलग किए गए फ़ॉर्मैट में नेस्ट किए गए हों.
ऊपर दिखाई गई Extract Variables नीति को ठीक करने के लिए, वैरिएबल के नाम
var.color.nextमें बदलाव करके, वैरिएबल के नामvar.nextcolor.का इस्तेमाल किया जा सकता है<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{nextcolor}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>
ज़्यादा जानकारी
ज़्यादा जानकारी के लिए, यह कम्यूनिटी पोस्ट पढ़ें.
InvalidJSONPath
गड़बड़ी का कोड
steps.extractvariables.InvalidJSONPath
गड़बड़ी के जवाब का मुख्य हिस्सा
{
"fault": {
"faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
"detail": {
"errorcode": "steps.extractvariables.InvalidJSONPath"
}
}
}
वजह
यह गड़बड़ी तब होती है, जब Extract Variables नीति के <JSONPath> एलिमेंट में अमान्य JSON पाथ का इस्तेमाल किया जाता है. उदाहरण के लिए, अगर किसी JSON पेलोड में Name ऑब्जेक्ट नहीं है, लेकिन आपने Extract Variables नीति में Name को पाथ के तौर पर तय किया है, तो यह गड़बड़ी होती है.
संक्रमण की जांच
उस Extract Variables नीति का पता लगाएं जिसमें गड़बड़ी हुई है. साथ ही, अमान्य JSON पाथ का पता लगाएं. आपको ये दोनों आइटम, गड़बड़ी के जवाब के
faultstringएलिमेंट में मिल सकते हैं. उदाहरण के लिए, यहां दी गई गड़बड़ी की स्ट्रिंग में, नीति का नामExtractJSONVariablesहै और अमान्य JSON पाथ$.Nameहै:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."Extract Variables नीति के एक्सएमएल में, पुष्टि करें कि
<JSONPath>एलिमेंट में सेट किया गया JSON पाथ, गड़बड़ी की स्ट्रिंग (ऊपर दिया गया पहला चरण) में पहचाने गए पाथ से मेल खाता हो. उदाहरण के लिए, यहां दी गई Extract Variables नीति में JSON पाथ$.Nameके बारे में बताया गया है. यह फ़ॉल्ट स्ट्रिंग में मौजूद जानकारी से मेल खाता है:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.Name</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables><Source>एलिमेंट की जांच करें और पता लगाएं कि आपको किस JSON पेलोड से वैरिएबल निकालना है. उदाहरण के लिए, अगर<Source>एलिमेंट कोrequestपर सेट किया जाता है, तो नीति अनुरोध ऑब्जेक्ट से JSON पेलोड निकाल रही है. अगर इसेresponseपर सेट किया जाता है, तो यह रिस्पॉन्स ऑब्जेक्ट होगा.ऊपर दिखाए गए Extract Variables नीति के उदाहरण में,
<Source>एलिमेंट कोresponseपर सेट किया गया है. इसलिए, वैरिएबल को जवाब के JSON पेलोड से निकाला जा रहा है.<Source>response</Source>सही JSON पेलोड (तीसरे चरण से तय किया गया) की जांच करें और पुष्टि करें कि इसमें
<JSONPath>एलिमेंट में दिया गया ऑब्जेक्ट मौजूद है या नहीं. अगर JSON पेलोड में वह ऑब्जेक्ट मौजूद नहीं है, तो गड़बड़ी की वजह यही है.उदाहरण के लिए, मान लें कि आपको यहां दिए गए JSON रिस्पॉन्स पेलोड से वैरिएबल निकालने हैं:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }JSON रिस्पॉन्स पेलोड में
Nameऑब्जेक्ट मौजूद नहीं है. इसलिए, Extract Variables नीति लागू नहीं हो पाती है. आपको यह गड़बड़ी कोड मिलता है:steps.extractvariables.InvalidJSONPath.
रिज़ॉल्यूशन
पक्का करें कि Extract Variables नीति के
<JSONPath>एलिमेंट में सिर्फ़ वे ऑब्जेक्ट शामिल हों जो JSON पेलोड का हिस्सा हैं और जिनसे वैरिएबल निकाले जा रहे हैं.ऊपर दिखाई गई Extract Variables नीति के उदाहरण को ठीक करने के लिए,
<JSONPath>एलिमेंट में बदलाव किया जा सकता है. इससे, सैंपल JSON रिस्पॉन्स पेलोड में उपलब्ध किसी एक ऑब्जेक्ट के बारे में बताया जा सकता है. उदाहरण के लिए,firstNameऔरlastNameऑब्जेक्ट मान्य हैं:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.firstName</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables>
ExecutionFailed
गड़बड़ी का कोड
steps.extractvariables.ExecutionFailed
गड़बड़ी के जवाब का मुख्य हिस्सा
{
"fault": {
"faultstring": "Failed to execute the ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.ExecutionFailed"
}
}
}
संभावित कारण
इस गड़बड़ी की ये वजहें हो सकती हैं:
| Cause | ब्यौरा |
| इनपुट पेलोड मौजूद नहीं है | इनपुट पेलोड (JSON, XML) खाली है. |
| अमान्य या गलत तरीके से बनाया गया इनपुट | नीति को दिया गया इनपुट (JSON, XML वगैरह) अमान्य है या इसमें कोई बदलाव किया गया है. |
वजह: इनपुट पेलोड मौजूद नहीं है
अगर Extract Variables नीति को JSON या XML पेलोड से वैरिएबल निकालने हैं, लेकिन <Source> एलिमेंट में तय किए गए वैरिएबल का कॉन्टेंट (पेलोड) खाली है, तो यह गड़बड़ी होती है.
उदाहरण के लिए, अगर Extract Variables नीति में <Source> एलिमेंट को request या response के तौर पर सेट किया गया है और उनमें JSON या XML पेलोड शामिल होना चाहिए, लेकिन पेलोड खाली है, तो गड़बड़ी होती है.
संक्रमण की जांच
उस Extract Variables नीति की पहचान करें जिसमें गड़बड़ी हुई है. यह जानकारी, गड़बड़ी के जवाब के faultstring एलिमेंट में देखी जा सकती है. उदाहरण के लिए, इस फ़ॉल्टस्ट्रिंग में नीति का नाम
ExtractJSONVariablesहै:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"Extract Variables की प्रोसेस में गड़बड़ी करने वाले एक्सएमएल में मौजूद
<Source>एलिमेंट की जांच करें. साथ ही, यह पता लगाएं कि वैरिएबल किस तरह के इनपुट से निकाले जा रहे हैं. उदाहरण के लिए, यहां दी गई Extract Variables नीति में<Source>एलिमेंट कोresponseपर सेट किया गया है. साथ ही, यह एक्सएमएल पेलोड से वैरिएबल निकाल रहा है:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true"> <XMLPayload> <Namespaces/> <Variable name="City" type="string"> <XPath>/city</XPath> </Variable> </XMLPayload> <Source clearPayload="false">response</Source> </ExtractVariables>इस नीति से यह पता चलता है कि Extract Variables नीति से पार्स किया जा रहा इनपुट खाली है या नहीं. अगर इनपुट खाली है, तो यह गड़बड़ी की वजह है.
ऊपर दिखाए गए Extract Variables नीति के उदाहरण में, बैकएंड सर्वर से भेजे गए रिस्पॉन्स पेलोड (यानी कि रिस्पॉन्स बॉडी) में कोई डेटा नहीं था.
एक्सएमएल रिस्पॉन्स पेलोड खाली होने की वजह से, आपको यह गड़बड़ी कोड मिलता है:
steps.extractvariables.ExecutionFailedयह गड़बड़ी तब भी हो सकती है, जब
<Source>एलिमेंट कोrequestपर सेट किया गया हो, लेकिन एपीआई प्रॉक्सी अनुरोध में कोई पेलोड पास न किया गया हो. उदाहरण के लिए:curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"Extract Variables नीति, सिर्फ़ तब XML एक्सट्रैक्शन करती है, जब मैसेज का
Content-Typeहेडरapplication/xml,text/xmlयाapplication/*+xmlहो. अगर आपको Extract Variables नीति के तहत, एक्सएमएल अनुरोध पेलोड को पार्स करना है, तो आपको Content-Type हेडर कोapplication/xml,text/xmlयाapplication/*+xmlके तौर पर पास करना होगा.
रिज़ॉल्यूशन
पक्का करें कि Extract Variables नीति को दिया गया इनपुट मान्य हो और खाली न हो.
ऊपर दिखाई गई Extract Variables नीति के उदाहरण से जुड़ी समस्या को ठीक करने के लिए, मान्य एक्सएमएल पेलोड पास करें. उदाहरण के लिए:
यहां दिए गए कॉन्टेंट के साथ,
city.xmlनाम की फ़ाइल बनाएं:<city>Bengaluru</city> <area>Sanjaynagar</area>cURL कमांड का इस्तेमाल करके, एपीआई कॉल करें. इसके लिए, यह तरीका अपनाएं:
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
वजह: अमान्य या गलत तरीके से डाला गया इनपुट
अगर Extract Variables नीति, अमान्य या गलत तरीके से बनाए गए इनपुट को पार्स करती है, तो आपको यह गड़बड़ी दिखती है.
उदाहरण के लिए, अगर Extract Variables नीति के लिए इनपुट के तौर पर यह अमान्य JSON दिया जाता है, तो आपको यह गड़बड़ी दिखेगी.
[
"args": ["name" : "amar" ]
]
संक्रमण की जांच
उस Extract Variables नीति की पहचान करें जिसमें गड़बड़ी हुई है. यह जानकारी, गड़बड़ी के जवाब के
faultstringएलिमेंट में देखी जा सकती है. उदाहरण के लिए, यहां दिए गएfaultstringमें, नीति का नामExtractJSONVariablesहै:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"Extract Variables की प्रोसेस में गड़बड़ी करने वाले एक्सएमएल में मौजूद
<Source>एलिमेंट की जांच करें. साथ ही, यह पता लगाएं कि वैरिएबल किस तरह के इनपुट से निकाले जा रहे हैं. उदाहरण के लिए, यहां दी गई Extract Variables नीति में<Source>एलिमेंट कोrequestपर सेट किया गया है. साथ ही, JSON पेलोड से वैरिएबल निकाले जा रहे हैं:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> </ExtractVariables>यह जांच करता है कि Extract Variables नीति से पार्स किया जा रहा इनपुट मान्य है या नहीं. अगर इनपुट अमान्य है या उसमें कोई बदलाव किया गया है, तो यह गड़बड़ी की वजह है.
ऊपर दिए गए Extract Variables नीति के उदाहरण में, Extract Variables नीति को यह अमान्य JSON पास किया गया था
[ "args": ["name" : "amar" ] ]यहां एपीआई कॉल का एक सैंपल दिया गया है. इससे पता चलता है कि अनुरोध कैसे पास किया गया था:
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'एपीआई को पास किया गया JSON पेलोड अमान्य है, क्योंकि इसमें स्क्वेयर ब्रैकेट (
[ ]) वाला एक ऐरे शामिल है. इसलिए, आपको यह गड़बड़ी कोड मिलता है:steps.extractvariables.ExecutionFailedयह गड़बड़ी तब भी हो सकती है, जब
<Source>एलिमेंट कोresponseपर सेट किया गया हो, लेकिन JSON रिस्पॉन्स पेलोड अमान्य हो या गलत फ़ॉर्मैट में हो.
रिज़ॉल्यूशन
पक्का करें कि Extract Variables नीति को दिया गया इनपुट मान्य हो और उसमें कोई बदलाव न किया गया हो.
ऊपर बताई गई, Extract Variables नीति के उदाहरण से जुड़ी समस्या को ठीक करने के लिए, यहां दिए गए तरीके से मान्य JSON पेलोड अनुरोध पास करें:
{
"args":{
"name":"amar"
}
}
UnableToCast
गड़बड़ी का कोड
steps.extractvariables.UnableToCast
गड़बड़ी के जवाब का मुख्य हिस्सा
{
"fault": {
"faultstring": "Unable to cast value [value] as [type].",
"detail": {
"errorcode": "steps.extractvariables.UnableToCast"
}
}
}
वजह
यह गड़बड़ी तब होती है, जब Extract Variables नीति, निकाली गई वैल्यू को किसी वैरिएबल में नहीं डाल पाती. आम तौर पर, ऐसा तब होता है, जब किसी एक डेटा टाइप की वैल्यू को किसी दूसरे डेटा टाइप के वैरिएबल पर सेट करने की कोशिश की जाती है.
उदाहरण के लिए, अगर Extract Variable नीति, String वैरिएबल से निकाली गई वैल्यू को Integer वैरिएबल पर सेट करने की कोशिश करती है, तो आपको यह गड़बड़ी दिखेगी.
संक्रमण की जांच
उस वैरिएबल के डेटा टाइप की पहचान करें जिसे Extract Variables नीति कास्ट करने की कोशिश कर रही है और ऐसा नहीं हो पा रहा है. यह जानकारी, गड़बड़ी के जवाब के
faultstringएलिमेंट में देखी जा सकती है. उदाहरण के लिए, यहां दिए गएfaultstringमें, ऑब्जेक्ट टाइपBOOLEANहै:"faultstring":"Unable to cast value 36.231 as BOOLEAN."उस Extract Variables नीति का पता लगाएं जहां आपको पहले चरण में तय किए गए टाइप के वैरिएबल की वैल्यू सेट करनी है.
उदाहरण के लिए, Extract Variables नीति, JSONPath
$.latitudeसे वैल्यू कोbooleanटाइप के वैरिएबल में बदलती है. यह वैल्यू, गड़बड़ी की स्ट्रिंग में मौजूद वैल्यू से मेल खाती है:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="latitude" type="boolean"> <JSONPath>$.latitude</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">response</Source> </ExtractVariables>एक्सट्रैक्ट की जा रही वैल्यू के डेटा टाइप की जांच करें. डेटा, हेडर, यूआरआई पाथ, JSON/XML पेलोड, फ़ॉर्म पैरामीटर, और क्वेरी पैरामीटर के तौर पर हो सकता है.
पुष्टि करें कि तीसरे चरण में तय किया गया डेटा टाइप और दूसरे चरण में तय किया गया, उस वैरिएबल का डेटा टाइप एक ही हो जिसमें डेटा असाइन किया जा रहा है.
अगर सोर्स और डेस्टिनेशन वैरिएबल का डेटा टाइप एक जैसा नहीं है, तो इसकी वजह से गड़बड़ी होती है.
ऊपर दिखाई गई Extract Variables नीति के उदाहरण में, मान लें कि JSON अनुरोध का पेलोड इस तरह है:
{ "latitude":36.2312 }<JSONPath>,‘$.latitude’से निकाली जा रही वैल्यू का डेटा टाइप पूर्णांक है. इसे बूलियन डेटा टाइप के वैरिएबल को असाइन किया जा रहा है.निकाली गई वैल्यू का डेटा टाइप और जिस वैरिएबल को वैल्यू असाइन की जा रही है उसका डेटा टाइप एक जैसा नहीं है. इसलिए, आपको यह गड़बड़ी कोड मिलता है:
steps.extractvariables.UnableToCast.
रिज़ॉल्यूशन
पक्का करें कि निकाली गई वैल्यू और जिस वैरिएबल को कॉन्टेंट असाइन किया जा रहा है उसका डेटा टाइप एक जैसा हो.
Extract Variables नीति के उदाहरण को ठीक करने के लिए, आपको वैरिएबल के टाइप को Integer में बदलना होगा:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="latitude" type="integer">
<JSONPath>$.latitude</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response</Source>
</ExtractVariables>
JsonPathParsingFailure
गड़बड़ी का कोड
steps.extractvariables.JsonPathParsingFailure
गड़बड़ी के जवाब का मुख्य हिस्सा
{
"fault": {
"faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]",
"detail": {
"errorcode": "steps.extractvariables.JsonPathParsingFailure"
}
}
}
वजह
यह गड़बड़ी तब होती है, जब Extract Variables नीति, JSON पाथ को पार्स नहीं कर पाती. साथ ही, <Source> एलिमेंट में दिए गए फ़्लो वैरिएबल से डेटा एक्सट्रैक्ट नहीं कर पाती. आम तौर पर ऐसा तब होता है, जब <Source> एलिमेंट में बताया गया फ़्लो वैरिएबल, मौजूदा फ़्लो में मौजूद न हो.
उदाहरण के लिए, यह गड़बड़ी तब होती है, जब Extract Variables नीति, रिस्पॉन्स फ़्लो में लागू होती है और JSON पाथ को पार्स करने की उम्मीद करती है. हालांकि, <Source> एलिमेंट, फ़्लो वैरिएबल request.content के बारे में बताता है, जो रिस्पॉन्स फ़्लो में मौजूद नहीं है.
संक्रमण की जांच
उस Extract Variables नीति का पता लगाएं जिसमें गड़बड़ी हुई है. साथ ही, उस फ़्लो वैरिएबल का नाम पता लगाएं जिससे डेटा को नहीं निकाला जा सका. आपको ये दोनों आइटम, गड़बड़ी के जवाब के faultstring एलिमेंट में दिखेंगे. उदाहरण के लिए, यहां दिए गए फ़ॉल्टस्ट्रिंग में, नीति का नाम
ExtractVariables-1है और वैरिएबलrequest.contentहै:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"Extract Variables नीति की फ़ेल हुई एक्सएमएल फ़ाइल में, पुष्टि करें कि
<Source>एलिमेंट में सेट किए गए वैरिएबल का नाम, फ़ॉल्ट स्ट्रिंग (ऊपर दिया गया पहला चरण) में पहचाने गए वैरिएबल के नाम से मेल खाता हो. उदाहरण के लिए, नीचे दी गई Extract Variables नीति मेंrequest.contentनाम का एक वैरिएबल बताया गया है. यह वैरिएबल, फ़ॉल्टस्ट्रिंग में मौजूद वैरिएबल से मेल खाता है:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request.content</Source> </ExtractVariables>पुष्टि करें कि
<Source>एलिमेंट में इस्तेमाल किया गया फ़्लो वैरिएबल, उस फ़्लो में तय किया गया हो और उपलब्ध हो जिसमें Extract Variables नीति लागू की जा रही है.अगर वैरिएबल की वैल्यू इनमें से कोई एक है:
- स्कोप से बाहर है (उस फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
- हल नहीं किया जा सकता (तय नहीं किया गया है)
तो यह गड़बड़ी की वजह है.
उदाहरण के लिए, मान लें कि ऊपर दिखाई गई ExtractVariables नीति को रिस्पॉन्स फ़्लो में लागू किया जाना है. याद रखें कि फ़्लो वैरिएबल
request.contentका इस्तेमाल, Extract Variables नीति के<Source>एलिमेंट में किया जाता है. फ़्लो वैरिएबलrequest.contentसिर्फ़ अनुरोध फ़्लो में उपलब्ध है.अनुरोध के फ़्लो में
responseवैरिएबल मौजूद नहीं है. इसलिए, आपको गड़बड़ी का यह कोड मिलता है:steps.extractvariables.JsonPathParsingFailure.
रिज़ॉल्यूशन
पक्का करें कि Extract Variables नीति के <Source> एलिमेंट में इस्तेमाल किया गया फ़्लो वैरिएबल, उस फ़्लो में उपलब्ध हो जिसमें Extract Variables नीति लागू होती है.
उदाहरण के लिए, मान लें कि रिस्पॉन्स फ़्लो में response.content नाम का एक वैरिएबल मौजूद है. साथ ही, इसमें वह JSON शामिल है जिसे आपको एक्सट्रैक्ट करना है. ऊपर दिखाई गई ExtractVariables नीति को ठीक करने के लिए, <Source> एलिमेंट में इस तरह बदलाव किया जा सकता है:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="Name" type="string">
<JSONPath>$.args.name</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response.content</Source>
</ExtractVariables>