PythonScript की नीति

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

क्या

Python स्क्रिप्ट नीति से आपको अपने एपीआई प्रॉक्सी फ़्लो में, पसंद के मुताबिक Python फ़ंक्शन जोड़ने की सुविधा मिलती है. खास तौर पर, ऐसा तब होता है, जब आपकी ज़रूरत के हिसाब से Edge की आउट-टू-डेट नीतियों से ज़्यादा सुविधाएं हों उपलब्ध कराएँ.

Jython के ज़रिए Python भाषा से जुड़ी सहायता दी जाती है वर्शन 2.5.2 है. जोड़ी जाने वाली तीसरे पक्ष की लाइब्रेरी "प्योर Python" होनी चाहिए (सिर्फ़ Python में लागू किया जाता है). लाइब्रेरी जोड़ने के बारे में ज़्यादा जानने के लिए, संसाधन फ़ाइलें देखें.

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

सैंपल

Python नीति और स्क्रिप्ट

Python स्क्रिप्ट से जुड़ी नीति

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script name="Python-1">
        <DisplayName>Python-1</DisplayName>
        <ResourceURL>py://myscript.py</ResourceURL>
</Script>

इस उदाहरण में, ResourceURL, काम की Python स्क्रिप्ट के बारे में बताता है संसाधन.

Python स्क्रिप्ट

यह दिखाता है कि Python स्क्रिप्ट में क्या शामिल किया जा सकता है.

import base64

username = flow.getVariable("request.formparam.client_id")
password = flow.getVariable("request.formparam.client_secret")

base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
authorization = "Basic "+base64string

flow.setVariable("authorizationParam",authorization)

एलिमेंट का रेफ़रंस

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script name="Python-1">
    <DisplayName>Python-1</DisplayName>
    <ResourceURL>py://myscript.py</ResourceURL>
    <IncludeURL>py://myscript_dependency.py</IncludeURL>
</Script>

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

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

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

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

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

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

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

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

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

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

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

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

गलत बहिष्कृत

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

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

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

लागू नहीं

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

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

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

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

<ResourceURL>py://myscript.py</ResourceURL>
डिफ़ॉल्ट: कोई नहीं
मौजूदगी: ज़रूरी है
टाइप: स्ट्रिंग

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

इस नीति से, मुख्य Python फ़ाइल के लिए डिपेंडेंसी के तौर पर लोड की जाने वाली Python फ़ाइल के बारे में बताता है <ResourceURL> एलिमेंट. स्क्रिप्ट का आकलन इसी क्रम में किया जाएगा वे नीति में शामिल हैं.

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

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

गड़बड़ी कोड

इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के साथ-साथ गड़बड़ी के वैरिएबल के बारे में बताया गया है ये सेटिंग, Edge की मदद से सेट की जाती हैं. ऐसा तब होता है, जब इस नीति की वजह से कोई गड़बड़ी होती है. यह जानकारी जानना ज़रूरी है लागू करने के लिए, गड़बड़ियों को ठीक करता है. ज़्यादा जानने के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों और हैंडलिंग के बारे में जानकारी गलतियां.

रनटाइम की गड़बड़ियां

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी कोड एचटीटीपी कोड स्थिति वजह ठीक करें
steps.script.ScriptEvaluationFailed 500 PythonScript नीति के उल्लंघन की वजह से, आपको अलग-अलग तरह की कई तरह की Script ScriptutionFailed गड़बड़ियां मिल सकती हैं. आम तौर पर देखी जाने वाली गड़बड़ियों में NameError और ZeroDivisionError.

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

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

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

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

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

वैरिएबल कहां उदाहरण
fault.name="fault_name" fault_name गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम में गड़बड़ियां टेबल में बताया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. fault.name Matches "ScriptExecutionFailed"
pythonscript.policy_name.failed policy_name, उपयोगकर्ता की ओर से बताया गया उस नीति का नाम है जिसमें गड़बड़ी हुई है. pythonscript.PythonScript-1.failed = true

गड़बड़ी के रिस्पॉन्स का उदाहरण

{
  "fault": {
    "faultstring": "Execution of SetResponse failed with error: Pythonscript runtime error: "ReferenceError: "status" is not defined.\"",
    "detail": {
      "errorcode": "steps.script.ScriptExecutionFailed"
    }
  }
}

गड़बड़ी के नियम का उदाहरण

<FaultRule name="PythonScript Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition>
    </Step>
    <Condition>(pythonscript.PythonScript-1.failed = true) </Condition>
</FaultRule>

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