JavaScript नीति

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

क्या

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

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

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

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

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

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

JavaScript के मौजूदा वर्शन के बारे में जानने के लिए, काम करने वाले सॉफ़्टवेयर और काम करने वाले वर्शन देखें.

वीडियो

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

सैंपल

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

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

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

  1. Edge यूज़र इंटरफ़ेस (यूआई) में, प्रॉक्सी एडिटर में बनाई गई प्रॉक्सी खोलें.
  2. डेवलप करें टैब चुनें.
  3. नया मेन्यू में जाकर, नई स्क्रिप्ट चुनें.
  4. डायलॉग में, JavaScript चुनें और स्क्रिप्ट को कोई नाम दें. जैसे, js-example.
  5. कोड एडिटर में यह कोड चिपकाएं और प्रॉक्सी सेव करें. ध्यान देने वाली ज़रूरी बात यह है कि नोटिस करने के लिए 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);
    }
  6. नई नीति मेन्यू में जाकर, JavaScript चुनें.
  7. नीति को कोई नाम दें. जैसे, target-rewrite. डिफ़ॉल्ट सेटिंग स्वीकार करें और नीति सेव करें
  8. अगर नेविगेटर में प्रॉक्सी एंडपॉइंट प्रीफ़्लो चुना जाता है, तो आपको दिखेगा कि नीति उस फ़्लो में जोड़ दी गई है.
  9. नेविगेटर में, टारगेट एंडपॉइंट प्रीफ़्लो आइकॉन चुनें.
  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

आखिरी बात, इस उदाहरण में इस्तेमाल की गई JavaScript नीति की एक्सएमएल परिभाषा पर एक नज़र डालते हैं. ध्यान देने वाली ज़रूरी बात यह है कि <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 मिसेकंड की सीमा पार हो जाती है, तो नीति यह गड़बड़ी दिखाती है: 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 एट्रिब्यूट की वैल्यू यह होगी इस्तेमाल किया गया.

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

<IncludeURL> एलिमेंट

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

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

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

उदाहरण

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

<Property> एलिमेंट

इससे, ऐसी प्रॉपर्टी तय की जाती है जिसे रनटाइम पर JavaScript कोड से ऐक्सेस किया जा सकता है.

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

एट्रिब्यूट

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

इससे, प्रॉपर्टी का नाम तय होता है.

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

उदाहरण

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

<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 नीति से बनाए गए सभी एचटीटीपी क्लाइंट इंस्टेंस के लिए TLS कॉन्फ़िगर करने के लिए किया जाता है.

    <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 नीति, a JavaScript 'संसाधन' का रेफ़रंस देती है और एपीआई फ़्लो में वह चरण तय करती है जहां JavaScript लागू होता है. स्क्रिप्ट को मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर की मदद से अपलोड किया जा सकता है. इसके अलावा, इसे स्थानीय तौर पर डेवलप की गई एपीआई प्रॉक्सी में /resources/jsc डायरेक्ट्री में शामिल किया जा सकता है.

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

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

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

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

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

Trace Tool में, डीबग करने की जानकारी दिखाने के लिए, 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.
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 कम्यूनिटी पर, ये मिलते-जुलते लेख देखे जा सकते हैं: