आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
क्या
इस नीति की मदद से, कस्टम JavaScript कोड जोड़ा जा सकता है. यह कोड, एपीआई प्रॉक्सी फ़्लो के कॉन्टेक्स्ट में काम करता है. अपने कस्टम JavaScript कोड में, Apigee Edge JavaScript ऑब्जेक्ट मॉडल के ऑब्जेक्ट, तरीके, और प्रॉपर्टी इस्तेमाल की जा सकती हैं. ऑब्जेक्ट मॉडल की मदद से, प्रॉक्सी फ़्लो के कॉन्टेक्स्ट में वैरिएबल को पाया, सेट किया, और हटाया जा सकता है. ऑब्जेक्ट मॉडल के साथ उपलब्ध बुनियादी क्रिप्टोग्राफ़िक फ़ंक्शन का भी इस्तेमाल किया जा सकता है.
इसके बारे में जानकारी
JavaScript नीति के कई इस्तेमाल के उदाहरण हैं. उदाहरण के लिए, फ़्लो वैरिएबल को सेट और हासिल किया जा सकता है. साथ ही, कस्टम लॉजिक को लागू किया जा सकता है और गड़बड़ी को ठीक किया जा सकता है. इसके अलावा, अनुरोधों या जवाबों से डेटा निकाला जा सकता है, बैकएंड टारगेट यूआरएल को डाइनैमिक तौर पर बदला जा सकता है, और भी बहुत कुछ किया जा सकता है. इस नीति की मदद से, आपको कस्टम व्यवहार लागू करने की अनुमति मिलती है. यह ऐसा व्यवहार होता है जो Edge की किसी अन्य स्टैंडर्ड नीति के दायरे में नहीं आता. असल में, JavaScript नीति का इस्तेमाल करके, अन्य नीतियों के ज़रिए लागू की गई कई सुविधाओं को लागू किया जा सकता है. जैसे, AssignMessage और ExtractVariable.
हम JavaScript नीति के तहत, लॉगिंग के लिए इसका इस्तेमाल करने का सुझाव नहीं देते. मैसेज लॉगिंग की नीति, तीसरे पक्ष के लॉगिंग प्लैटफ़ॉर्म पर लॉग करने के लिए ज़्यादा बेहतर है. जैसे, Splunk, Sumo, और Loggly. साथ ही, PostClientFlow में मैसेज लॉगिंग की नीति लागू करके, एपीआई प्रॉक्सी की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. PostClientFlow, क्लाइंट को जवाब वापस भेजने के बाद लागू होता है.
JavaScript नीति की मदद से, JavaScript की सोर्स फ़ाइल को एक्ज़ीक्यूट करने के लिए तय किया जा सकता है. इसके अलावा, <Source> एलिमेंट की मदद से, JavaScript कोड को सीधे तौर पर नीति के कॉन्फ़िगरेशन में शामिल किया जा सकता है.
दोनों ही मामलों में, JavaScript कोड तब लागू होता है, जब नीति से जुड़ा चरण लागू होता है.
सोर्स फ़ाइल के विकल्प के लिए, सोर्स कोड हमेशा प्रॉक्सी बंडल में स्टैंडर्ड जगह पर सेव किया जाता है: apiproxy/resources/jsc. इसके अलावा, सोर्स कोड को एनवायरमेंट या संगठन लेवल पर किसी संसाधन फ़ाइल में भी सेव किया जा सकता है. निर्देशों के लिए, संसाधन फ़ाइलें देखें. Apigee के यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर की मदद से भी, JavaScript अपलोड की जा सकती है.
JavaScript की सोर्स फ़ाइलों में हमेशा .js एक्सटेंशन होना चाहिए.
JavaScript के मौजूदा वर्शन के साथ काम करने वाले सॉफ़्टवेयर और वर्शन के बारे में जानने के लिए, सपोर्ट किए गए सॉफ़्टवेयर और वर्शन पर जाएं.
वीडियो
JavaScript नीति का इस्तेमाल करके, कस्टम नीति एक्सटेंशन बनाने का तरीका जानने के लिए, यह छोटा वीडियो देखें.
सैंपल
टारगेट यूआरएल को फिर से लिखना
यहां इस्तेमाल का एक सामान्य उदाहरण दिया गया है: अनुरोध के मुख्य हिस्से से डेटा निकालना, उसे फ़्लो वैरिएबल में सेव करना, और उस फ़्लो वैरिएबल का इस्तेमाल प्रॉक्सी फ़्लो में कहीं और करना. मान लें कि आपके पास एक ऐसा ऐप्लिकेशन है जहां उपयोगकर्ता, एचटीएमएल फ़ॉर्म में अपना नाम डालता है और उसे सबमिट करता है. आपको एपीआई प्रॉक्सी से फ़ॉर्म का डेटा निकालना है और उसे बैकएंड सेवा को कॉल करने के लिए इस्तेमाल किए गए यूआरएल में डाइनैमिक तरीके से जोड़ना है. JavaScript की नीति में यह काम कैसे किया जा सकता है?
ध्यान दें: अगर आपको इस उदाहरण को आज़माना है, तो हम मान लेते हैं कि आपने प्रॉक्सी एडिटर में एक नई प्रॉक्सी बनाई है. इसे बनाते समय, इसे बैकएंड सेवा का यह यूआरएल दें: http://www.example.com. इस उदाहरण के लिए, हम बैकएंड यूआरएल को डाइनैमिक तरीके से फिर से लिखेंगे. अगर आपको नई प्रॉक्सी बनाने का तरीका नहीं पता, तो शुरू करने से जुड़ा ट्यूटोरियल देखें. .
- Edge यूज़र इंटरफ़ेस (यूआई) में, प्रॉक्सी एडिटर में बनाई गई प्रॉक्सी खोलें.
- डेवलप करें टैब को चुनें.
- 'नया' मेन्यू में जाकर, नई स्क्रिप्ट को चुनें.
- डायलॉग बॉक्स में, JavaScript चुनें और स्क्रिप्ट को कोई नाम दें. जैसे,
js-example. - कोड एडिटर में यह कोड चिपकाएं और प्रॉक्सी सेव करें. ध्यान देने वाली ज़रूरी बात यह है कि
contextऑब्जेक्ट. यह ऑब्जेक्ट, JavaScript कोड के लिए प्रॉक्सी फ़्लो में कहीं भी उपलब्ध होता है. इसका इस्तेमाल फ़्लो से जुड़े कॉन्स्टेंट पाने, काम के get/set तरीकों को कॉल करने, और अन्य कार्रवाइयों के लिए किया जाता है. यह ऑब्जेक्ट पार्ट, Edge के JavaScript ऑब्जेक्ट मॉडल का है. यह भी ध्यान दें किtarget.urlफ़्लो वैरिएबल, बिल्ट-इन वैरिएबल है. इसे पढ़ा और लिखा जा सकता है. साथ ही, इसे टारगेट अनुरोध फ़्लो में ऐक्सेस किया जा सकता है. जब हम एपीआई यूआरएल के साथ उस वैरिएबल को सेट करते हैं, तो Edge उस यूआरएल पर बैकएंड कॉल करता है. हमने टारगेट यूआरएल को फिर से लिखा है.यह वही यूआरएल है जिसे आपने प्रॉक्सी बनाते समय डाला था. उदाहरण के लिए, http://www.example.com).
if (context.flow=="PROXY_REQ_FLOW") { var username = context.getVariable("request.formparam.user"); context.setVariable("info.username", username); } if (context.flow=="TARGET_REQ_FLOW") { context.setVariable("request.verb", "GET"); var name = context.getVariable("info.username"); var url = "http://mocktarget.apigee.net/" context.setVariable("target.url", url + "?user=" + name); }
- 'नई नीति' मेन्यू में जाकर, JavaScript चुनें.
- नीति को कोई नाम दें, जैसे कि
target-rewrite. डिफ़ॉल्ट सेटिंग स्वीकार करें और नीति सेव करें. - नेविगेटर में प्रॉक्सी एंडपॉइंट प्रीफ़्लो चुनने पर, आपको दिखेगा कि उस फ़्लो में नीति जोड़ दी गई है.
- नेविगेटर में, Target Endpoint PreFlow आइकॉन चुनें.
- नेविगेटर से, JavaScript नीति को खींचकर फ़्लो एडिटर में टारगेट एंडपॉइंट के अनुरोध वाले हिस्से पर छोड़ें.
- सेव करें पर क्लिक करें.
- एपीआई को इस तरह कॉल करें. इसमें अपने संगठन का सही नाम और प्रॉक्सी का नाम डालें:
curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST -d 'user=Will' http://myorg-test.apigee.net/js-example
आखिरी बात, आइए इस उदाहरण में इस्तेमाल की गई JavaScript नीति की XML परिभाषा पर एक नज़र डालें. ध्यान देने वाली ज़रूरी बात यह है कि <ResourceURL>
ऐलिमेंट का इस्तेमाल, JavaScript की सोर्स फ़ाइल को एक्ज़ीक्यूट करने के लिए किया जाता है. इसी पैटर्न का इस्तेमाल, किसी भी JavaScript सोर्स फ़ाइल के लिए किया जाता है: jsc://filename.js. अगर आपके JavaScript कोड में फ़ाइलें शामिल करने की ज़रूरत है, तो इसके लिए एक या उससे ज़्यादा <IncludeURL> एलिमेंट का इस्तेमाल किया जा सकता है. इसके बारे में इस रेफ़रंस में बाद में बताया गया है.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="target-rewrite"> <DisplayName>target-rewrite</DisplayName> <Properties/> <ResourceURL>jsc://js-example.js</ResourceURL> </Javascript>
JavaScript से प्रॉपर्टी की वैल्यू पाना
कॉन्फ़िगरेशन में <Property> एलिमेंट जोड़ा जा सकता है. इसके बाद, रनटाइम में JavaScript की मदद से एलिमेंट की वैल्यू वापस पाई जा सकती है.
JavaScript कोड से प्रॉपर्टी को ऐक्सेस करने के लिए, एलिमेंट के name एट्रिब्यूट का इस्तेमाल करके नाम तय करें. <Property> एलिमेंट की वैल्यू (ओपनिंग और क्लोज़िंग टैग के बीच की वैल्यू) वह लिटरल वैल्यू होती है जो JavaScript को मिलेगी.
JavaScript में, नीति की प्रॉपर्टी की वैल्यू को Properties ऑब्जेक्ट की प्रॉपर्टी के तौर पर ऐक्सेस करके पाया जाता है. जैसे, यहां दिखाया गया है:
- प्रॉपर्टी को कॉन्फ़िगर करें. यहां प्रॉपर्टी वैल्यू, वैरिएबल का नाम
response.status.codeहै.<Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="JavascriptURLRewrite"> <DisplayName>JavascriptURLRewrite</DisplayName> <Properties> <Property name="source">response.status.code</Property> </Properties> <ResourceURL>jsc://JavascriptURLRewrite.js</ResourceURL> </Javascript>
- JavaScript की मदद से प्रॉपर्टी को वापस पाएं. यहां, फ़ेच की गई वैल्यू -- एक वैरिएबल का नाम -- का इस्तेमाल
getVariableफ़ंक्शन करता है, ताकि वैरिएबल की वैल्यू को फ़ेच किया जा सके.var responseCode = properties.source; // Returns "response.status.code" var value = context.getVariable(responseCode); // Get the value of response.status.code context.setVariable("response.header.x-target-response-code", value);
गड़बड़ियों को ठीक करना
JavaScript कॉलआउट में इस्तेमाल की जा सकने वाली, गड़बड़ी को ठीक करने की तकनीकों के उदाहरण और उनके बारे में चर्चा के लिए, Apigee कम्यूनिटी में यह पोस्ट देखें. Apigee कम्यूनिटी में दिए गए सुझाव सिर्फ़ जानकारी के लिए हैं. ज़रूरी नहीं कि ये Apigee के सुझाए गए सबसे सही तरीके हों.
एलिमेंट का रेफ़रंस
एलिमेंट रेफ़रंस में, JavaScript नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="JavaScript-1"> <DisplayName>JavaScript 1</DisplayName> <Properties> <Property name="propName">propertyValue</Property> </Properties> <SSLInfo> <Enabled>trueFalse</Enabled> <ClientAuthEnabled>trueFalse</ClientAuthEnabled> <KeyStore>ref://keystoreRef</KeyStore> <KeyAlias>keyAlias</KeyAlias> <TrustStore>ref://truststoreRef</TrustStore> </SSLInfo> <IncludeURL>jsc://a-javascript-library-file</IncludeURL> <ResourceURL>jsc://my-javascript-source-file</ResourceURL> <Source>insert_js_code_here</Source> </Javascript>
<Javascript> एट्रिब्यूट
<Javascript name="Javascript-1" enabled="true" continueOnError="false" async="false" timeLimit="200">
यहां दिए गए एट्रिब्यूट, इस नीति के लिए खास तौर पर बनाए गए हैं.
| एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
|---|---|---|---|
| timeLimit |
इससे यह तय होता है कि स्क्रिप्ट को ज़्यादा से ज़्यादा कितने समय (मिलीसेकंड में) तक
चलने की अनुमति है. उदाहरण के लिए, अगर 200 मि॰से॰ की सीमा पार हो जाती है, तो नीति यह गड़बड़ी दिखाती है:
ध्यान दें: मुफ़्त में आज़माने की सुविधा वाले खातों के लिए, क्वेरी को पूरा होने में लगने वाला समय 200 मिलीसेकंड से ज़्यादा नहीं होना चाहिए. |
लागू नहीं | ज़रूरी है |
यहां दी गई टेबल में, ऐसे एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट में एक जैसे होते हैं:
| एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
|---|---|---|---|
name |
नीति का अंदरूनी नाम. इसके अलावा, नीति को लेबल करने के लिए, |
लागू नहीं | ज़रूरी है |
continueOnError |
किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे |
गलत | वैकल्पिक |
enabled |
नीति को लागू करने के लिए, नीति को बंद करने के लिए, |
सही | वैकल्पिक |
async |
यह एट्रिब्यूट अब काम नहीं करता. |
गलत | बहिष्कृत |
<DisplayName> एलिमेंट
इस कॉलम में नीति को लेबल करने के लिए, name एट्रिब्यूट के साथ-साथ इस्तेमाल करें
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.
<DisplayName>Policy Display Name</DisplayName>
| डिफ़ॉल्ट |
लागू नहीं अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की |
|---|---|
| मौजूदगी | वैकल्पिक |
| टाइप | स्ट्रिंग |
<IncludeURL> एलिमेंट
यह मुख्य JavaScript फ़ाइल के लिए, डिपेंडेंसी के तौर पर लोड की जाने वाली JavaScript लाइब्रेरी फ़ाइल के बारे में बताता है. इस फ़ाइल के बारे में <ResourceURL> या <Source> एलिमेंट से पता चलता है. स्क्रिप्ट का आकलन, नीति में दिए गए क्रम के हिसाब से किया जाएगा. आपका कोड, JavaScript ऑब्जेक्ट मॉडल के ऑब्जेक्ट, तरीकों, और प्रॉपर्टी का इस्तेमाल कर सकता है.
एक से ज़्यादा JavaScript डिपेंडेंसी रिसॉर्स शामिल करें. साथ ही, <IncludeURL> अतिरिक्त एलिमेंट शामिल करें.
<IncludeURL>jsc://my-javascript-dependency.js</IncludeURL>
| डिफ़ॉल्ट: | कोई नहीं |
| मौजूदगी: | वैकल्पिक |
| टाइप: | स्ट्रिंग |
उदाहरण
सैंपल सेक्शन में, बुनियादी उदाहरण देखें.
<Property> एलिमेंट
यह ऐसी प्रॉपर्टी के बारे में बताता है जिसे रनटाइम के दौरान JavaScript कोड से ऐक्सेस किया जा सकता है.
<Properties> <Property name="propName">propertyValue</Property> </Properties>
| डिफ़ॉल्ट: | कोई नहीं |
| मौजूदगी: | वैकल्पिक |
| टाइप: | स्ट्रिंग |
विशेषताएं
| एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
|---|---|---|---|
| नाम |
प्रॉपर्टी का नाम बताता है. |
लागू नहीं | ज़रूरी है. |
उदाहरण
सैंपल सेक्शन में दिया गया उदाहरण देखें.
<ResourceURL> एलिमेंट
यह मुख्य JavaScript फ़ाइल के बारे में बताता है, जो एपीआई फ़्लो में काम करेगी. इस फ़ाइल को एपीआई प्रॉक्सी के स्कोप (एपीआई प्रॉक्सी बंडल में /apiproxy/resources/jsc के नीचे या एपीआई प्रॉक्सी एडिटर के नेविगेटर पैनल के स्क्रिप्ट सेक्शन में) पर सेव किया जा सकता है. इसके अलावा, इसे संगठन या एनवायरमेंट के स्कोप पर भी सेव किया जा सकता है, ताकि इसका इस्तेमाल कई एपीआई प्रॉक्सी में किया जा सके. इसके बारे में संसाधन फ़ाइलें में बताया गया है. आपका कोड, JavaScript ऑब्जेक्ट मॉडल के ऑब्जेक्ट, तरीकों, और प्रॉपर्टी का इस्तेमाल कर सकता है.
<ResourceURL>jsc://my-javascript.js</ResourceURL>
| डिफ़ॉल्ट: | कोई नहीं |
| मौजूदगी: | <ResourceURL> या <Source> में से कोई एक वैल्यू देना ज़रूरी है. अगर <ResourceURL> और <Source>, दोनों मौजूद हैं, तो <ResourceURL> को अनदेखा कर दिया जाता है. |
| टाइप: | स्ट्रिंग |
उदाहरण
सैंपल सेक्शन में, बुनियादी उदाहरण देखें.
<Source> एलिमेंट
इसकी मदद से, नीति के एक्सएमएल कॉन्फ़िगरेशन में सीधे तौर पर JavaScript डाली जा सकती है. नीति के एपीआई फ़्लो में लागू होने पर, डाला गया JavaScript कोड काम करता है.
| डिफ़ॉल्ट: | कोई नहीं |
| मौजूदगी: | <ResourceURL> या <Source> में से कोई एक वैल्यू देना ज़रूरी है. अगर <ResourceURL> और <Source>, दोनों मौजूद हैं, तो <ResourceURL> को अनदेखा कर दिया जाता है. |
| टाइप: | स्ट्रिंग |
उदाहरण
<Javascript name='JS-ParseJsonHeaderFullString' timeLimit='200' > <Properties> <Property name='inboundHeaderName'>specialheader</Property> <Property name='outboundVariableName'>json_stringified</Property> </Properties> <Source> var varname = 'request.header.' + properties.inboundHeaderName + '.values.string'; var h = context.getVariable(varname); if (h) { h = JSON.parse(h); h.augmented = (new Date()).valueOf(); var v = JSON.stringify(h, null, 2) + '\n'; // further indent var r = new RegExp('^(\S*)','mg'); v= v.replace(r,' $1'); context.setVariable(properties.outboundVariableName, v); } </Source> </Javascript>
<SSLInfo> एलिमेंट
इस प्रॉपर्टी का इस्तेमाल, JavaScript नीति से बनाए गए सभी एचटीटीपी क्लाइंट इंस्टेंस के लिए टीएलएस को कॉन्फ़िगर करने के लिए किया जाता है.
<SSLInfo> <Enabled>trueFalse</Enabled> <ClientAuthEnabled>trueFalse</ClientAuthEnabled> <KeyStore>ref://keystoreRef</KeyStore> <KeyAlias>keyAlias</KeyAlias> <TrustStore>ref://truststoreRef</TrustStore> </SSLInfo>
| डिफ़ॉल्ट: | कोई नहीं |
| मौजूदगी: | वैकल्पिक |
| टाइप: | स्ट्रिंग |
एचटीटीपी क्लाइंट के लिए टीएलएस को कॉन्फ़िगर करने की प्रोसेस वही है जिसका इस्तेमाल TargetEndpoint/TargetServer के लिए टीएलएस को कॉन्फ़िगर करने के लिए किया जाता है. ज़्यादा जानकारी के लिए, Edge से बैकएंड तक टीएलएस को कॉन्फ़िगर करना लेख पढ़ें.
इस्तेमाल की जानकारी
JavaScript नीति में कोई असल कोड शामिल नहीं होता. इसके बजाय, JavaScript नीति, JavaScript 'संसाधन' का रेफ़रंस देती है. साथ ही, एपीआई फ़्लो में उस चरण के बारे में बताती है जहां JavaScript को एक्ज़ीक्यूट किया जाता है. मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर के ज़रिए अपनी स्क्रिप्ट अपलोड की जा सकती है. इसके अलावा, इसे उन एपीआई प्रॉक्सी के /resources/jsc डायरेक्ट्री में शामिल किया जा सकता है जिन्हें आपने स्थानीय तौर पर डेवलप किया है.
JavaScript नीति के कोड को डीबग करना
Trace Tool में मौजूद लेन-देन के आउटपुट पैनल में डीबग करने से जुड़ी जानकारी को आउटपुट करने के लिए, print() फ़ंक्शन का इस्तेमाल करें. ज़्यादा जानकारी और उदाहरणों के लिए, JavaScript print() स्टेटमेंट का इस्तेमाल करके डीबग करना लेख पढ़ें.
ट्रेस में प्रिंट स्टेटमेंट देखने के लिए:
- ट्रेस टूल खोलें और उस प्रॉक्सी के लिए ट्रेस सेशन शुरू करें जिसमें आपकी JavaScript नीति शामिल है.
- प्रॉक्सी को कॉल करें.
- ट्रेस टूल में, सभी लेन-देन का आउटपुट पर क्लिक करके आउटपुट पैनल खोलें.

- आपके प्रिंट स्टेटमेंट, इस पैनल में दिखेंगे.
ट्रेस टूल में डीबग करने से जुड़ी जानकारी को आउटपुट करने के लिए, print() फ़ंक्शन का इस्तेमाल किया जा सकता है. यह फ़ंक्शन, JavaScript ऑब्जेक्ट मॉडल के ज़रिए सीधे तौर पर उपलब्ध है. ज़्यादा जानकारी के लिए, "print() स्टेटमेंट की मदद से JavaScript को डीबग करना" लेख पढ़ें.
फ़्लो वैरिएबल
इस नीति में डिफ़ॉल्ट रूप से कोई वैरिएबल नहीं भरा जाता. हालांकि, कॉन्टेक्स्ट ऑब्जेक्ट पर तरीकों को कॉल करके, अपने JavaScript कोड में फ़्लो वैरिएबल सेट (और पाए) जा सकते हैं. सामान्य पैटर्न ऐसा दिखता है:
context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name"))
कॉन्टेक्स्ट ऑब्जेक्ट, Apigee Edge के JavaScript ऑब्जेक्ट मॉडल का हिस्सा है.
गड़बड़ी की जानकारी
इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के साथ-साथ गड़बड़ी के वैरिएबल के बारे में बताया गया है ये सेटिंग, Edge की मदद से सेट की जाती हैं. ऐसा तब होता है, जब इस नीति की वजह से कोई गड़बड़ी होती है. यह जानकारी जानना ज़रूरी है अगर आप गड़बड़ी के नियम बना रहे हैं, गड़बड़ियों को ठीक करता है. ज़्यादा जानने के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों और हैंडलिंग के बारे में जानकारी गलतियां.
रनटाइम की गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
| गड़बड़ी कोड | एचटीटीपी कोड स्थिति | वजह | ठीक करें |
|---|---|---|---|
steps.javascript.ScriptExecutionFailed |
500 | JavaScript नीति की वजह से, कई तरह की स्क्रिप् ट एक्ज़ीक्यूशनविल् ड गड़बड़ियां हो सकती हैं. आम तौर पर आम तौर पर होने वाली गड़बड़ियों में RangeError शामिल है. ReferenceError, SyntaxError, TypeError, और URIError. | build |
steps.javascript.ScriptExecutionFailedLineNumber |
500 | JavaScript कोड में कोई गड़बड़ी हुई. ज़्यादा जानकारी के लिए गड़बड़ी वाली स्ट्रिंग देखें. | लागू नहीं |
steps.javascript.ScriptSecurityError |
500 | JavaScript लागू होने के दौरान सुरक्षा से जुड़ी कोई गड़बड़ी हुई. इसके लिए गड़बड़ी वाली स्ट्रिंग देखें विवरण. | लागू नहीं |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाली प्रॉक्सी को डिप्लॉय किया जाता है.
| गड़बड़ी का नाम | वजह | ठीक करें |
|---|---|---|
InvalidResourceUrlFormat |
अगर JavaScript नीति के <ResourceURL> या <IncludeURL> एलिमेंट में बताए गए रिसॉर्स यूआरएल का फ़ॉर्मैट अमान्य है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता. |
build |
InvalidResourceUrlReference |
अगर <ResourceURL> या <IncludeURL> एलिमेंट
कोई ऐसी JavaScript फ़ाइल देखें जो मौजूद नहीं है, तो एपीआई प्रॉक्सी का डिप्लॉयमेंट नहीं हो पाता है.
रेफ़र की गई सोर्स फ़ाइल, एपीआई प्रॉक्सी, एनवायरमेंट या संगठन के लेवल पर मौजूद होनी चाहिए. |
build |
WrongResourceType |
डिप्लॉयमेंट के दौरान यह गड़बड़ी तब होती है, जब <ResourceURL> या <IncludeURL>
JavaScript नीति के एलिमेंट, jsc (JavaScript फ़ाइल) के अलावा किसी भी अन्य संसाधन टाइप के बारे में बताते हैं. |
build |
NoResourceURLOrSource |
इस गड़बड़ी की वजह से, हो सकता है कि JavaScript नीति को लागू नहीं किया जा सके, अगर <ResourceURL>
एलिमेंट का एलान नहीं किया गया हो या उसमें रिसॉर्स का यूआरएल तय नहीं किया गया हो.
<ResourceURL> एलिमेंट ज़रूरी है. इसके अलावा, <IncludeURL> एलिमेंट का एलान किया गया है
लेकिन इस एलिमेंट में, रिसॉर्स के यूआरएल के बारे में नहीं बताया गया है. <IncludeURL> एलिमेंट ज़रूरी नहीं है
अगर एलान किया गया हो, तो रिसॉर्स के यूआरएल को <IncludeURL> एलिमेंट में ही बताया जाना चाहिए. |
build |
गड़बड़ी के वैरिएबल
ये वैरिएबल तब सेट किए जाते हैं, जब यह नीति रनटाइम के दौरान कोई गड़बड़ी ट्रिगर करती है. ज़्यादा जानकारी के लिए, देखें आपको क्या नीति से जुड़ी गड़बड़ियों के बारे में जानकारी होनी चाहिए.
| वैरिएबल | कहां | उदाहरण |
|---|---|---|
fault.name="fault_name" |
fault_name गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम में गड़बड़ियां टेबल में बताया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. | fault.name Matches "ScriptExecutionFailed" |
javascript.policy_name.failed |
policy_name, उपयोगकर्ता की ओर से बताया गया उस नीति का नाम है जिसमें गड़बड़ी हुई है. | javascript.JavaScript-1.failed = true |
गड़बड़ी के रिस्पॉन्स का उदाहरण
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Javascript runtime error: "ReferenceError: "status" is not defined. (setresponse.js:6)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
गड़बड़ी के नियम का उदाहरण
<FaultRule name="JavaScript Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition> </Step> <Condition>(javascript.JavaScript-1.failed = true) </Condition> </FaultRule>
स्कीमा
नीति के हर टाइप को एक्सएमएल स्कीमा (.xsd) के ज़रिए तय किया जाता है. रेफ़रंस के लिए, नीति के स्कीमा GitHub पर उपलब्ध हैं.
मिलते-जुलते विषय
- JavaScript ऑब्जेक्ट मॉडल
- निर्देशों, नीति के सैंपल, और JavaScript के सैंपल के लिए, JavaScript की मदद से एपीआई प्रॉक्सी प्रोग्राम करना लेख पढ़ें.
Apigee कम्यूनिटी के लेख
आपको Apigee कम्यूनिटी में, इनसे जुड़े लेख मिल सकते हैं: