JavaScript नीति

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

क्या

इस नीति से, आपको एपीआई के कॉन्टेक्स्ट में काम करने वाला कस्टम JavaScript कोड जोड़ने की सुविधा मिलती है प्रॉक्सी फ़्लो. अपने कस्टम JavaScript कोड में, Apigee Edge का JavaScript ऑब्जेक्ट मॉडल. ऑब्जेक्ट मॉडल से, आपको डेटा पाने, सेट करने, और हटाने की सुविधा मिलती है वैरिएबल की संख्या डालें. आपने लोगों तक पहुंचाया मुफ़्त में ऑब्जेक्ट मॉडल के साथ दिए गए बेसिक क्रिप्टोग्राफ़िक फ़ंक्शन का भी इस्तेमाल कर सकता है.

इसके बारे में जानकारी

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

लॉग इन करना JavaScript नीति के लिए इस्तेमाल का एक उदाहरण है. हम इसे इस्तेमाल करने का सुझाव नहीं देते. मैसेज लॉग करने की नीति यह तीसरे पक्ष के लॉगिंग प्लैटफ़ॉर्म, जैसे कि Splunk, Sumo, और Loggly में लॉग इन करने के लिए सबसे सही है. PostClientFlow में मैसेज लॉगिंग नीति लागू करके एपीआई प्रॉक्सी परफ़ॉर्मेंस को बेहतर बनाते हैं, जो क्लाइंट को रिस्पॉन्स वापस भेजे जाने के बाद काम करता है.

JavaScript नीति की मदद से, एक JavaScript सोर्स फ़ाइल को तय किया जा सकता है, ताकि उसे एक्ज़ीक्यूट किया जा सके या आपके पास <Source> का इस्तेमाल करके, सीधे नीति के कॉन्फ़िगरेशन में JavaScript कोड को शामिल करने का विकल्प है एलिमेंट. दोनों में से किसी भी तरीके से, JavaScript कोड तब काम करता है, जब वह चरण लागू होता है जिससे नीति अटैच की गई है. सोर्स फ़ाइल विकल्प के लिए, सोर्स कोड हमेशा प्रॉक्सी बंडल में स्टैंडर्ड लोकेशन: apiproxy/resources/jsc. या, आप यह भी कर सकते हैं स्रोत कोड को पर्यावरण या संगठन के स्तर पर किसी संसाधन फ़ाइल में संग्रहित कर सकता है. इसके लिए निर्देशों के लिए, संसाधन फ़ाइलें देखें. आप साथ ही, Apigee यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर की मदद से अपना JavaScript अपलोड करें.

JavaScript सोर्स फ़ाइलों में हमेशा एक .js एक्सटेंशन होना चाहिए.

Google Play Books पर काम करने वाले सॉफ़्टवेयर और YouTube TV के साथ काम करने वाले वर्शन देखें JavaScript के हाल ही में काम करने वाले वर्शन के लिए.

वीडियो

JavaScript का इस्तेमाल करके कस्टम नीति एक्सटेंशन बनाने का तरीका जानने के लिए, यह छोटा सा वीडियो देखें की नीति देखें.

सैंपल

टारगेट यूआरएल को फिर से लिखें

यहां इस्तेमाल का एक सामान्य उदाहरण दिया गया है: अनुरोध के मुख्य हिस्से से डेटा निकालना और उसे किसी फ़्लो में सेव करना साथ ही, उस फ़्लो वैरिएबल का इस्तेमाल प्रॉक्सी फ़्लो में किसी दूसरी जगह कर सकता है. मान लें कि आपके पास एक ऐप्लिकेशन है जहां उपयोगकर्ता एचटीएमएल फ़ॉर्म में अपना नाम डालकर सबमिट करता है. एपीआई प्रॉक्सी को फ़ॉर्म डेटा को एक्सट्रैक्ट करके और उसे डाइनैमिक तौर पर उस यूआरएल में जोड़ सकता है जिसका इस्तेमाल बैकएंड सेवा को कॉल करने के लिए किया जाता है. ऑफ़र कैसे दें क्या आप इसे JavsScript नीति में करेंगे?

ध्यान दें: यदि आप इस उदाहरण को आज़माना चाहते हैं, तो हम मान लेते हैं कि आपने नया प्रॉक्सी एडिटर में प्रॉक्सी कर सकते हैं. इसे बनाते समय, बस इसे बैकएंड सेवा का यूआरएल दें: http://www.example.com/. उदाहरण के लिए, हम बैकएंड यूआरएल को डाइनैमिक तौर पर फिर से लिखेंगे. अगर आपको नया प्रॉक्सी बनाने का तरीका नहीं पता है, तो शुरू करने का ट्यूटोरियल देखें. .

  1. Edge के यूज़र इंटरफ़ेस (यूआई) में, वह प्रॉक्सी खोलें जिसे आपने प्रॉक्सी एडिटर में बनाया है.
  2. डेवलप करें टैब चुनें.
  3. नए मेन्यू से, नई स्क्रिप्ट चुनें.
  4. डायलॉग बॉक्स में, JavaScript चुनें और स्क्रिप्ट को कोई नाम दें, जैसे js-example.
  5. कोड एडिटर में इस कोड को चिपकाएं और प्रॉक्सी सेव करें. इसके लिए, नोटिस, context ऑब्जेक्ट है. यह ऑब्जेक्ट JavaScript कोड के लिए उपलब्ध है कहीं भी सेट किया जा सकता है. इसका इस्तेमाल प्रवाह के हिसाब से स्थिर नियतांक के बारे में जानने के लिए किया जाता है. पाने/सेट करने का तरीका, और ज़्यादा कार्रवाइयों के लिए. ऑब्जेक्ट का यह हिस्सा 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);
    }
    
  6. नई नीति मेन्यू से, JavaScript चुनें.
  7. नीति को कोई नाम दें, जैसे कि target-rewrite. डिफ़ॉल्ट स्वीकार करें और सेव करें नीति के बारे में ज़्यादा जानें.
  8. अगर आपने Navigator में प्रॉक्सी एंडपॉइंट प्रीफ़्लो को चुना है, तो आपको को उस फ़्लो में जोड़ दिया गया था.
  9. Navigator में, Target Endpoint PreFlow आइकॉन को चुनें.
  10. नेविगेटर से, JavaScript नीति को टारगेट के अनुरोध वाले साइड में खींचें और छोड़ें फ़्लो एडिटर में एंडपॉइंट.
  11. सेव करें पर क्लिक करें.
  12. अपने संगठन के सही नाम और प्रॉक्सी नाम को इस रूप में बदलकर, एपीआई को इस तरह कॉल करें उचित:
curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST -d 'user=Will' http://myorg-test.apigee.net/js-example

एक आखिरी बात, आइए, अब GA4 में इस्तेमाल की जाने वाली यह उदाहरण. ध्यान रखें कि <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 के साथ एलिमेंट की वैल्यू सबमिट करती है.

एलिमेंट के name एट्रिब्यूट का इस्तेमाल करके, वह नाम बताएं जिससे ऐक्सेस करना है प्रॉपर्टी को JavaScript कोड से लिया गया है. <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>

&lt;Javascript&gt; विशेषताएं

<Javascript name="Javascript-1" enabled="true" continueOnError="false" async="false" timeLimit="200">

खास तौर पर, यहां दिए गए एट्रिब्यूट इस नीति के लिए हैं.

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
timeLimit

स्क्रिप्ट के लिए ज़्यादा से ज़्यादा समय (मिलीसेकंड में) तय करता है लागू करना. उदाहरण के लिए, अगर 200 मि॰से॰ की सीमा पार हो जाती है, तो नीति में यह गड़बड़ी दिखती है: Javascript.policy_name failed with error: Javascript runtime exceeded limit of 200ms.

ध्यान दें: मुफ़्त में आज़माने की सुविधा वाले खातों के लिए, एक्ज़ीक्यूशन की अवधि 200 तक होती है मिसे.

लागू नहीं ज़रूरी है

यहां दी गई टेबल में, ऐसे एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट में एक जैसे होते हैं:

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
name

नीति का अंदरूनी नाम. name एट्रिब्यूट की वैल्यू ये काम कर सकती है: अक्षरों, संख्याओं, स्पेस, हाइफ़न, अंडरस्कोर, और फ़ुलस्टॉप को शामिल करें. यह मान नहीं हो सकता 255 वर्णों से ज़्यादा होने चाहिए.

इसके अलावा, नीति को लेबल करने के लिए, <DisplayName> एलिमेंट का इस्तेमाल करें प्रबंधन यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर को अलग, आम भाषा में इस्तेमाल करने वाले नाम के साथ किया जा सकता है.

लागू नहीं ज़रूरी है
continueOnError

किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है व्यवहार की जानकारी देने वाला डेटा.

नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे true पर सेट करें विफल होता है.

गलत वैकल्पिक
enabled

नीति को लागू करने के लिए, true पर सेट करें.

नीति को बंद करने के लिए, false पर सेट करें. नीति लागू किया जाता है, भले ही वह किसी फ़्लो से जुड़ा रहता हो.

सही वैकल्पिक
async

यह एट्रिब्यूट अब काम नहीं करता.

गलत बहिष्कृत

&lt;DisplayName&gt; एलिमेंट

इस कॉलम में नीति को लेबल करने के लिए, name एट्रिब्यूट के साथ-साथ इस्तेमाल करें मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.

<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट

लागू नहीं

अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की name एट्रिब्यूट की वैल्यू यह होगी इस्तेमाल किया गया.

मौजूदगी वैकल्पिक
टाइप स्ट्रिंग

&lt;IncludeURL&gt; एलिमेंट

यह नीति, मुख्य JavaScript फ़ाइल की डिपेंडेंसी के तौर पर लोड की जाने वाली JavaScript लाइब्रेरी फ़ाइल के बारे में बताती है <ResourceURL> या <Source> एलिमेंट के साथ तय किया गया है. स्क्रिप्ट का आकलन इसमें किया जाएगा जिस क्रम में वे नीति में दिए गए हैं. आपका कोड इन चीज़ों, तरीकों, और JavaScript ऑब्जेक्ट मॉडल की प्रॉपर्टी.

एक से ज़्यादा JavaScript डिपेंडेंसी के लिए अतिरिक्त संसाधन शामिल करें <IncludeURL> एलिमेंट.

<IncludeURL>jsc://my-javascript-dependency.js</IncludeURL>
डिफ़ॉल्ट: कोई नहीं
मौजूदगी: वैकल्पिक
टाइप: स्ट्रिंग

उदाहरण

सैंपल सेक्शन में सामान्य उदाहरण देखें.

&lt;Property&gt; एलिमेंट

इस नीति से एक ऐसी प्रॉपर्टी के बारे में पता चलता है जिसे रनटाइम के दौरान JavaScript कोड से ऐक्सेस किया जा सकता है.

<Properties>
    <Property name="propName">propertyValue</Property>
</Properties>
डिफ़ॉल्ट: कोई नहीं
मौजूदगी: वैकल्पिक
टाइप: स्ट्रिंग

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
नाम

इससे प्रॉपर्टी का नाम पता चलता है.

लागू नहीं ज़रूरी है.

उदाहरण

सैंपल सेक्शन में यह उदाहरण देखें.

&lt;ResourceURL&gt; एलिमेंट

यह नीति, एपीआई फ़्लो में काम करने वाली मुख्य JavaScript फ़ाइल के बारे में बताती है. आप इस फ़ाइल को सेव कर सकते हैं एपीआई प्रॉक्सी के दायरे में (एपीआई प्रॉक्सी बंडल में /apiproxy/resources/jsc से कम या एपीआई प्रॉक्सी एडिटर के नेविगेटर पैनल का स्क्रिप्ट सेक्शन, या संगठन में या एक से ज़्यादा एपीआई प्रॉक्सी पर फिर से इस्तेमाल करने के लिए, एनवायरमेंट के दायरे का इस्तेमाल किया जा सकता है. इस बारे में संसाधन फ़ाइलों में बताया गया है. आपका कोड, इन ऑब्जेक्ट का इस्तेमाल कर सकता है, JavaScript ऑब्जेक्ट मॉडल के तरीके और प्रॉपर्टी.

<ResourceURL>jsc://my-javascript.js</ResourceURL>
डिफ़ॉल्ट: कोई नहीं
मौजूदगी: <ResourceURL> या <Source> में से किसी एक को भरना ज़रूरी है. अगर आपने <ResourceURL> और <Source>, दोनों मौजूद हैं <ResourceURL> को अनदेखा कर दिया गया है.
टाइप: स्ट्रिंग

उदाहरण

सैंपल सेक्शन में सामान्य उदाहरण देखें.

&lt;Source&gt; एलिमेंट

इससे आपको सीधे नीति के एक्सएमएल कॉन्फ़िगरेशन में 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>

&lt;SSLInfo&gt; एलिमेंट

यह नीति, उन सभी एचटीटीपी क्लाइंट इंस्टेंस के लिए, TLS को कॉन्फ़िगर करने के लिए इस्तेमाल की जाने वाली प्रॉपर्टी के बारे में बताती है JavaScript नीति.

    <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
    </SSLInfo>
डिफ़ॉल्ट: कोई नहीं
मौजूदगी: वैकल्पिक
टाइप: स्ट्रिंग

एचटीटीपी क्लाइंट के लिए TLS को कॉन्फ़िगर करने की प्रोसेस वही है जिसका इस्तेमाल कॉन्फ़िगरेशन के लिए किया जाता है TargetEndpoint/TargetServer के लिए TLS. Edge से बैकएंड में TLS कॉन्फ़िगर करना देखें हमारा वीडियो देखें.

इस्तेमाल की जानकारी

JavaScript की नीति में कोई असल कोड नहीं होता. इसके बजाय, JavaScript नीति में JavaScript 'संसाधन' और एपीआई फ़्लो का वह चरण बताता है जिसमें JavaScript काम करता है. आप मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर के ज़रिए अपनी स्क्रिप्ट अपलोड करें या आप इसे एपीआई प्रॉक्सी में /resources/jsc डायरेक्ट्री, जिसे आपने स्थानीय तौर पर डेवलप किया है.

JavaScript नीति कोड को डीबग करना

ट्रांज़ैक्शन की जानकारी को डीबग करने के लिए, print() फ़ंक्शन का इस्तेमाल करें आउटपुट पैनल. ज़्यादा जानकारी और उदाहरणों के लिए, JavaScript की मदद से डीबग करना देखें print() स्टेटमेंट.

ट्रेस में प्रिंट स्टेटमेंट देखने के लिए:

  1. ट्रेस टूल खोलें और उस प्रॉक्सी के लिए ट्रेस सेशन शुरू करें जिसमें आपकी JavaScript शामिल है की नीति देखें.
  2. प्रॉक्सी को कॉल करें.
  3. आउटपुट देखने के लिए, ट्रेस टूल में सभी लेन-देन से मिला आउटपुट पर क्लिक करें पैनल.

  4. आपके प्रिंट स्टेटमेंट इस पैनल में दिखेंगे.

ट्रेस टूल में डीबग की जानकारी देने के लिए, 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.
steps.javascript.ScriptExecutionFailedLineNumber 500 JavaScript कोड में कोई गड़बड़ी हुई. ज़्यादा जानकारी के लिए गड़बड़ी वाली स्ट्रिंग देखें. लागू नहीं
steps.javascript.ScriptSecurityError 500 JavaScript लागू होने के दौरान सुरक्षा से जुड़ी कोई गड़बड़ी हुई. इसके लिए गड़बड़ी वाली स्ट्रिंग देखें विवरण. लागू नहीं

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाली प्रॉक्सी को डिप्लॉय किया जाता है.

गड़बड़ी का नाम वजह ठीक करें
InvalidResourceUrlFormat अगर JavaScript नीति के <ResourceURL> या <IncludeURL> एलिमेंट में बताए गए रिसॉर्स यूआरएल का फ़ॉर्मैट अमान्य है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता.
InvalidResourceUrlReference अगर <ResourceURL> या <IncludeURL> एलिमेंट कोई ऐसी JavaScript फ़ाइल देखें जो मौजूद नहीं है, तो एपीआई प्रॉक्सी का डिप्लॉयमेंट नहीं हो पाता है. रेफ़र की गई सोर्स फ़ाइल, एपीआई प्रॉक्सी, एनवायरमेंट या संगठन के लेवल पर मौजूद होनी चाहिए.
WrongResourceType डिप्लॉयमेंट के दौरान यह गड़बड़ी तब होती है, जब <ResourceURL> या <IncludeURL> JavaScript नीति के एलिमेंट, jsc (JavaScript फ़ाइल) के अलावा किसी भी अन्य संसाधन टाइप के बारे में बताते हैं.
NoResourceURLOrSource इस गड़बड़ी की वजह से, हो सकता है कि JavaScript नीति को लागू नहीं किया जा सके, अगर <ResourceURL> एलिमेंट का एलान नहीं किया गया हो या उसमें रिसॉर्स का यूआरएल तय नहीं किया गया हो. <ResourceURL> एलिमेंट ज़रूरी है. इसके अलावा, <IncludeURL> एलिमेंट का एलान किया गया है लेकिन इस एलिमेंट में, रिसॉर्स के यूआरएल के बारे में नहीं बताया गया है. <IncludeURL> एलिमेंट ज़रूरी नहीं है अगर एलान किया गया हो, तो रिसॉर्स के यूआरएल को <IncludeURL> एलिमेंट में ही बताया जाना चाहिए.

गड़बड़ी के वैरिएबल

ये वैरिएबल तब सेट किए जाते हैं, जब यह नीति रनटाइम के दौरान कोई गड़बड़ी ट्रिगर करती है. ज़्यादा जानकारी के लिए, देखें आपको क्या नीति से जुड़ी गड़बड़ियों के बारे में जानकारी होनी चाहिए.

वैरिएबल कहां उदाहरण
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 पर उपलब्ध हैं.

मिलते-जुलते विषय

Apigee कम्यूनिटी के लेख

इस विषय से मिलते-जुलते ये लेख, Apigee पर उपलब्ध हैं कम्यूनिटी: