फ़्लो वैरिएबल का इस्तेमाल करना

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

सैद्धान्तिक तौर पर, फ़्लो वैरिएबल ऐसे ऑब्जेक्ट होते हैं जिन्हें आप अपनी नीतियों या सुविधाओं (जैसे कि ट्रेस टूल टूल) में से ऐक्सेस कर सकते हैं. इनकी मदद से, Apigee Edge से प्रोसेस किए गए किसी एपीआई लेन-देन की स्थिति बनी रह सकती है.

फ़्लो वैरिएबल क्या हैं?

फ़्लो वैरिएबल, एपीआई प्रॉक्सी फ़्लो के संदर्भ में मौजूद होते हैं. साथ ही, वे एपीआई लेन-देन में स्थिति को उसी तरह ट्रैक करते हैं जिस तरह किसी सॉफ़्टवेयर प्रोग्राम में नाम वाले वैरिएबल, स्थिति को ट्रैक करते हैं. फ़्लो वैरिएबल से इस तरह की जानकारी स्टोर होती है:

  • अनुरोध करने वाले ऐप्लिकेशन से भेजा गया आईपी पता, हेडर, यूआरएल पाथ, और पेलोड
  • सिस्टम की जानकारी, जैसे कि Edge को अनुरोध मिलने की तारीख और समय
  • किसी नीति के लागू होने पर मिला डेटा. उदाहरण के लिए, जब कोई नीति लागू होने के बाद OAuth टोकन की पुष्टि की जाती है, तब Edge फ़्लो वैरिएबल बनाता है. इनमें, अनुरोध करने वाले ऐप्लिकेशन के नाम जैसी जानकारी शामिल होती है.
  • टारगेट सिस्टम से मिले जवाब के बारे में जानकारी

कुछ वैरिएबल Edge में "बिल्ट-इन" होते हैं और एपीआई के लिए अनुरोध मिलने पर अपने-आप पॉप्युलेट होते हैं. ये एपीआई लेन-देन के दौरान उपलब्ध होते हैं. आपके पास assignMessage policy जैसी नीतियों या JavaScript, Node.js, और Java कोड जैसी नीतियों का इस्तेमाल करके खुद के कस्टम वैरिएबल भी बनाए जा सकते हैं.

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

फ़्लो वैरिएबल का इस्तेमाल कैसे किया जाता है?

फ़्लो वैरिएबल का इस्तेमाल नीतियों और कंडिशनल फ़्लो में किया जाता है:

  • नीतियां, फ़्लो वैरिएबल से स्थिति की जानकारी हासिल कर सकती हैं और उनका इस्तेमाल करके अपने काम कर सकती हैं.

    उदाहरण के लिए, VerifyJWT नीति, फ़्लो वैरिएबल से पुष्टि करने के लिए, टोकन को वापस पा सकती है और फिर इस पर पुष्टि कर सकती है. दूसरे उदाहरण के तौर पर, JavaScript की नीति फ़्लो वैरिएबल को फिर से हासिल कर सकती है और उन वैरिएबल में मौजूद डेटा को कोड में बदल सकती है.

  • कंडिशनल फ़्लो में Edge के ज़रिए किसी एपीआई के फ़्लो को डायरेक्ट करने के लिए, फ़्लो वैरिएबल का रेफ़रंस दिया जा सकता है. यह उसी तरह है जिस तरह प्रोग्रामिंग में स्विच स्टेटमेंट काम करता है.

    उदाहरण के लिए, गड़बड़ी वापस करने की नीति सिर्फ़ तब लागू हो सकती है, जब कोई खास फ़्लो वैरिएबल सेट किया गया हो. आखिर में, आपके पास Node.js टारगेट ऐप्लिकेशन में फ़्लो वैरिएबल पाने और उन्हें सेट करने का विकल्प है.

आइए, उदाहरण से समझते हैं कि इनमें से हर कॉन्टेक्स्ट में वैरिएबल का इस्तेमाल कैसे किया जाता है.

नीतियों में फ़्लो वैरिएबल

कुछ नीतियों में इनपुट के तौर पर फ़्लो वैरिएबल इस्तेमाल किए जाते हैं.

उदाहरण के लिए, नीचे दी गई assignMessage नीति, फ़्लो वैरिएबल client.ip की वैल्यू लेकर उसे My-Client-IP नाम के अनुरोध हेडर में रखती है. अगर इसे अनुरोध फ़्लो में जोड़ा जाता है, तो यह नीति एक ऐसा हेडर सेट करती है जिसे बैकएंड टारगेट को भेजा जाता है. अगर रिस्पॉन्स फ़्लो पर सेट किया जाता है, तो हेडर को क्लाइंट ऐप्लिकेशन पर वापस भेजा जाता है.

<AssignMessage name="set-ip-in-header">
    <AssignTo createNew="false" transport="http" type="request">request</AssignTo>
    <Set>
        <Headers>
            <Header name="My-Client-IP">{client.ip}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>

दूसरे उदाहरण के लिए, जब कोई कोटा नीति लागू होती है, तो कई फ़्लो वैरिएबल को नीति से जुड़ी वैल्यू से भर दिया जाता है. इनमें से एक वैरिएबल को ratelimit.my-quota-policy.used.count कहा जाता है. इसमें my-quota-policy, उस कोटा नीति का नाम है जिसमें आपकी दिलचस्पी है.

आप चाहें, तो बाद में शर्तों के साथ कोई ऐसा फ़्लो लागू करें जिसमें यह लिखा हो, "अगर मौजूदा कोटा 50% से कम है और यह सुबह 9 बजे से शाम 5 बजे के बीच है, तो दूसरा कोटा लागू करें." यह स्थिति, कोटा की मौजूदा संख्या की वैल्यू और system.time नाम के फ़्लो वैरिएबल पर निर्भर कर सकती है. यह वैरिएबल पहले से मौजूद EDGE वैरिएबल में से एक है.

कंडिशनल फ़्लो में फ़्लो वैरिएबल

कंडिशनल फ़्लो फ़्लो वैरिएबल का आकलन करते हैं और प्रॉक्सी को डाइनैमिक तौर पर काम करने के लिए चालू करते हैं. आम तौर पर, शर्तों का इस्तेमाल फ़्लो, कदमों, और रूट के नियमों का व्यवहार बदलने के लिए किया जाता है.

यहां एक कंडिशनल फ़्लो दिया गया है, जो प्रॉक्सी फ़्लो के चरण में, वैरिएबल request.verb की वैल्यू का आकलन करता है. इस मामले में, अगर अनुरोध की कार्रवाई 'पोस्ट करें' है, तो VerifyAPIKey नीति लागू की जाती है. यह एक सामान्य पैटर्न है, जिसे एपीआई प्रॉक्सी कॉन्फ़िगरेशन में इस्तेमाल किया जाता है.

<PreFlow name="PreFlow">
    <Request>
        <Step>
            <Condition>request.verb equals "POST"</Condition>
            <Name>VerifyApiKey</Name>
        </Step>
    </Request>
</PreFlow>

अब आपके मन में यह ख्याल आया होगा कि request.verb, client.ip, और system.time जैसे वैरिएबल कैसे आते हैं? उन्हें कब इंस्टैंशिएट किया जाता है और किसी वैल्यू के साथ पॉप्युलेट किया जाता है? वैरिएबल कब बनाए जाते हैं और वे आपके लिए कब उपलब्ध होते हैं, यह समझने के लिए, फ़्लो वैरिएबल के दायरे को समझना लेख पढ़ें.

JavaScript कोड के फ़्लो वैरिएबल, JavaScript नीति के साथ कॉल किए गए

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

context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name"));

वैरिएबल को पढ़ने और सेट करने के लिए JavaScript का इस्तेमाल करने की यह तकनीक, उसी तरह काम करती है जिस तरह AssignmentMessage नीति की मदद से की जा सकती है (इसे पहले दिखाया गया है). यह Edge पर इस तरह की चीज़ें पाने का एक और तरीका है. यह याद रखना ज़रूरी है कि JavaScript नीति के तहत एक्ज़ीक्यूट किए गए JavaScript के पास, उन सभी फ़्लो वैरिएबल का ऐक्सेस होता है जो मौजूद हैं और एपीआई प्रॉक्सी फ़्लो के दायरे में हैं.

Node.js कोड में फ़्लो वैरिएबल

apigee-access मॉड्यूल को ज़रूरी बनाकर, Edge पर डिप्लॉय किए गए Node.js कोड से, फ़्लो वैरिएबल को सेट और ऐक्सेस किया जा सकता है.

यहां एक सामान्य उदाहरण दिया गया है, जिसमें custom.foo नाम के वैरिएबल को Bar वैल्यू पर सेट किया गया है. सेट हो जाने के बाद, यह नया वैरिएबल उन सभी नीतियों या अन्य कोड के लिए उपलब्ध हो जाता है जो Node.js कोड के चालू होने के बाद प्रॉक्सी फ़्लो में होते हैं.

var http = require('http');
var apigee = require('apigee-access');

http.createServer(function (request, response) {
  apigee.setVariable(request, "custom.foo", "Bar");
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

Node.js में फ़्लो वैरिएबल को ऐक्सेस करने में, वैरिएबल के साथ काम करने के लिए apigee-access का इस्तेमाल करने के बारे में ज़्यादा जानें.

फ़्लो वैरिएबल के दायरे को समझना

वैरिएबल स्कोप, किसी एपीआई प्रॉक्सी कॉल के फ़्लो या पूरे "लाइफ़ साइकल" से जुड़ा होता है.

एपीआई प्रॉक्सी के फ़्लो को विज़ुअलाइज़ करना

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

नीचे दिए चित्र में प्रवाह के इस क्रम को दिखाया गया है. ध्यान दें कि कैसे फ़्लो चार मुख्य सेगमेंट से मिलकर बने होते हैं: प्रॉक्सीEndpoint request, TargetEndpoint request, TargetEndpoint response, और ProxyEndpoint response.

इस फ़्लो स्ट्रक्चर को ध्यान में रखें, क्योंकि हम इस विषय के बाकी हिस्से में फ़्लो वैरिएबल को एक्सप्लोर करना शुरू कर रहे हैं.

वैरिएबल स्कोप, प्रॉक्सी फ़्लो से कैसे जुड़ा है

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

उदाहरण के लिए, अगर आपकी कोई नीति प्रॉक्सीEndpoint अनुरोध के सेगमेंट से जुड़ी है, तो वह नीति ऐसे किसी भी वैरिएबल को ऐक्सेस नहीं कर पाएगी जिसका दायरा TargetEndpoint अनुरोध सेगमेंट के दायरे में आता हो. इसकी वजह यह है कि फ़्लो के TargetEndpoint अनुरोध वाले सेगमेंट को अब तक एक्ज़ीक्यूट नहीं किया गया है. इसलिए, एपीआई प्रॉक्सी को उस दायरे में वैरिएबल भरने की सुविधा नहीं मिली.

इस टेबल में, वैरिएबल स्कोप के पूरे सेट की सूची दी गई है. साथ ही, यह बताया गया है कि प्रॉक्सी फ़्लो में वे कब उपलब्ध होंगे.

वैरिएबल का स्कोप इन वैरिएबल में जानकारी अपने-आप भर जाती है
प्रॉक्सी अनुरोध प्रॉक्सीEndpoint अनुरोध का सेगमेंट
टारगेट के लिए अनुरोध TargetEndpoint के अनुरोध का सेगमेंट
टारगेट किया गया जवाब TargetEndpoint रिस्पॉन्स सेगमेंट
प्रॉक्सी रिस्पॉन्स प्रॉक्सीEndpoint रिस्पॉन्स सेगमेंट
हमेशा उपलब्ध प्रॉक्सी सर्वर को अनुरोध मिलते ही. ये वैरिएबल, प्रॉक्सी फ़्लो के पूरे लाइफ़ साइकल के दौरान उपलब्ध रहते हैं.

उदाहरण के लिए, client.ip नाम का एक बिल्ट-इन Edge वैरिएबल होता है. इस वैरिएबल में "प्रॉक्सी अनुरोध" का स्कोप है. यह उस क्लाइंट के आईपी पते से अपने-आप भर जाता है जिसे प्रॉक्सी कहा जाता है. यह डेटा तब अपने-आप भर जाता है, जब कोई अनुरोध पहली बार प्रॉक्सीEndpoint पर जाता है और प्रॉक्सी फ़्लो के पूरे लाइफ़ साइकल के दौरान उपलब्ध रहता है.

इसमें target.url नाम का एक और बिल्ट-इन वैरिएबल होता है. इस वैरिएबल का स्कोप "टारगेट अनुरोध" है. यह TargetEndpoint के अनुरोध वाले सेगमेंट में अपने-आप भर जाता है. इसमें, बैक-एंड टारगेट को भेजे गए अनुरोध का यूआरएल शामिल होता है. अगर प्रॉक्सीEndpoint अनुरोध के सेगमेंट में target.url को ऐक्सेस करने की कोशिश की जाती है, तो आपको एक शून्य वैल्यू मिलेगी. अगर इस वैरिएबल को दायरे में आने से पहले सेट करने की कोशिश की जाती है, तो प्रॉक्सी कुछ नहीं करता—न तो गड़बड़ी जनरेट करता है और न ही वैरिएबल सेट करता है.

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

<AssignMessage name="CopyRequestToResponse">
    <AssignTo type="response" createNew="false">response</AssignTo>
    <Copy source="request"/>
</AssignMessage>

यह नीति सिर्फ़ request ऑब्जेक्ट को कॉपी करती है और उसे response ऑब्जेक्ट को असाइन करती है. हालांकि, इस नीति को प्रॉक्सी फ़्लो में कहां रखा जाना चाहिए? इसका जवाब है कि इसे TargetEndpoint रिस्पॉन्स पर डाला जाना चाहिए, क्योंकि रिस्पॉन्स वैरिएबल का स्कोप "टारगेट रिस्पॉन्स" है.

रेफ़रेंस फ़्लो वैरिएबल

Apigee Edge में मौजूद सभी बिल्ट-इन वैरिएबल, डॉट-नोटेशन नाम वाले फ़ॉर्मैट के मुताबिक होते हैं. इस कन्वेंशन की मदद से, वैरिएबल के मकसद का पता लगाना आसान हो जाता है. उदाहरण के लिए, system.time.hour और request.content.

Apigee, काम के वैरिएबल को सही तरीके से व्यवस्थित करने के लिए कई प्रीफ़िक्स सुरक्षित रखता है. इन प्रीफ़िक्स में शामिल हैं:

  • request
  • response
  • system
  • target

नीति में वैरिएबल का रेफ़रंस देने के लिए, उसे कर्ली ब्रैकेट में रखें. उदाहरण के लिए, नीचे दी गई AssignmentMessage नीति, client.ip वैरिएबल की वैल्यू लेकर उसे Client-IP नाम के अनुरोध हेडर में रखती है.

<AssignMessage name="set-ip-in-header">
    <AssignTo createNew="false" transport="http" type="request">request</AssignTo>
    <Set>
        <Headers>
            <Header name="Client-IP">{client.ip}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>

कंडिशनल फ़्लो में, कर्ली ब्रैकेट की ज़रूरत नहीं होती. यह शर्त, वैरिएबल request.header.accept का आकलन करती है:

<Step>
    <Condition>request.header.accept = "application/json"</Condition>
    <Name>XMLToJSON</Name>
</Step>

JavaScript और Java कोड में, फ़्लो वैरिएबल का रेफ़रंस भी दिया जा सकता है. ज़्यादा जानकारी के लिए, ये देखें:

फ़्लो वैरिएबल का डेटा टाइप

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

आपके बनाए गए वैरिएबल मैन्युअल रूप से बनाए जाने के समय दिए गए टाइप को मान लेते हैं. साथ ही, ये अनुमति दी जाने वाली वैल्यू के टाइप पर निर्भर करते हैं. उदाहरण के लिए, Node.js कोड में बनाए गए वैरिएबल, संख्या, स्ट्रिंग, बूलियन, शून्य या तय नहीं तक सीमित हैं.

नीतियों में फ़्लो वैरिएबल का इस्तेमाल करना

कई नीतियां, अपने सामान्य तौर पर काम करने के लिए फ़्लो वैरिएबल बनाती हैं. नीति का रेफ़रंस, नीति के हिसाब से बने सभी वैरिएबल को दर्ज करता है.

प्रॉक्सी और नीतियों का इस्तेमाल करते समय, नीति के रेफ़रंस पेज को ज़रूर देखें, ताकि यह पता चल सके कि कौनसे वैरिएबल बनाए जाते हैं और उनका इस्तेमाल क्यों किया जाता है. उदाहरण के लिए, कोटा नीति ऐसे वैरिएबल का सेट बनाती है जिनमें कोटा की संख्या और उसकी सीमाओं, खत्म होने के समय वगैरह की जानकारी होती है.

कुछ नीति वैरिएबल, डीबग करने के लिए काम के होते हैं. उदाहरण के लिए, आपके पास ट्रेस टूल टूल का इस्तेमाल करके यह देखने का विकल्प होता है कि प्रॉक्सी फ़्लो में, किसी खास इंस्टेंस पर कौनसे वैरिएबल सेट किए गए थे.

ExtractVariables नीति की मदद से, आपको मैसेज से निकाले गए डेटा के साथ कस्टम वैरिएबल भरने की सुविधा मिलती है. क्वेरी पैरामीटर, हेडर, और अन्य डेटा एक्सट्रैक्ट किया जा सकता है. उदाहरण के लिए, मैसेज से खास डेटा निकालने के लिए पैटर्न का इस्तेमाल करके, अनुरोध और रिस्पॉन्स मैसेज को पार्स किया जा सकता है.

यहां दिए गए उदाहरण में, एक्सट्रैक्ट वैरिएबल, रिस्पॉन्स मैसेज को पार्स करता है और रिस्पॉन्स से लिया गया खास डेटा सेव करता है. यह नीति, geocoderesponse.latitude और geocoderesponse.longitude नाम के दो कस्टम वैरिएबल बनाती है. साथ ही, उन्हें वैल्यू असाइन करती है.

<ExtractVariables name="ParseGeocodingResponse">
  <Source>response</Source>
  <VariablePrefix>geocoderesponse</VariablePrefix>
  <JSONPayload>
    <Variable name="latitude">
      <JSONPath>$.results[0].geometry.location.lat</JSONPath>
    </Variable>
    <Variable name="longitude">
      <JSONPath>$.results[0].geometry.location.lng</JSONPath>
    </Variable>
  </JSONPayload>
</ExtractVariables>

ध्यान रखें कि कई नीतियां अपने-आप वैरिएबल बनाती हैं. उन वैरिएबल को प्रॉक्सी फ़्लो के संदर्भ में ऐक्सेस किया जा सकता है. इन्हें नीति के हर विषय के तहत नीति के रेफ़रंस में दर्ज किया गया है.

JavaScript कोड में फ़्लो वैरिएबल के साथ काम करना

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

JavaScript कोड में वैरिएबल ऐक्सेस करने के लिए, इनमें से किसी भी ऑब्जेक्ट पर गैटर/सेटर मेथड को कॉल करें:

  • context
  • proxyRequest
  • proxyResponse
  • targetRequest
  • targetResponse

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

context ऑब्जेक्ट, "दुनिया भर में" उपलब्ध वैरिएबल, जैसे कि सिस्टम वैरिएबल से जुड़ा होता है. उदाहरण के लिए, मौजूदा साल की जानकारी पाने के लिए, context ऑब्जेक्ट पर getVariable() को कॉल किया जा सकता है:

var year = context.getVariable('system.time.year');

इसी तरह, setVariable() को कॉल करके, किसी कस्टम वैरिएबल की वैल्यू या किसी भी राइटिंग आउट-ऑफ़-द-बॉक्स वैरिएबल की वैल्यू सेट की जा सकती है. यहां हम organization.name.myorg नाम का एक कस्टम वैरिएबल बनाते हैं और उसे एक वैल्यू असाइन करते हैं.

var org = context.setVariable('organization.name.myorg', value);

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

आपके पास Java कोड में प्रॉक्सी फ़्लो वैरिएबल पाने/सेट करने का विकल्प है, जिसे Java कॉलआउट नीति की मदद से चलाया जाता है.

Node.js ऐप्लिकेशन में फ़्लो वैरिएबल ऐक्सेस करना

आपके पास Edge पर डिप्लॉय किए गए Node.js कोड से, फ़्लो वैरिएबल पाने, उसे सेट करने, और मिटाने का विकल्प होता है. आपको बस अपने कोड में apigee-access मॉड्यूल "ज़रूरी" करना होगा. ज़्यादा जानकारी के लिए, Node.js में फ़्लो वैरिएबल ऐक्सेस करना देखें.

आपको क्या याद रखना होगा

फ़्लो वैरिएबल के बारे में याद रखने वाली कुछ ज़रूरी बातें यहां दी गई हैं:

  • कुछ "आउट-ऑफ़-द-बॉक्स" वैरिएबल अपने-आप प्रॉक्सी से इंस्टैंशिएट और पॉप्युलेट होते हैं. इसे फ़्लो वैरिएबल के रेफ़रंस में शामिल किया गया है.
  • आपके पास ऐसे कस्टम वैरिएबल बनाने का विकल्प होता है जो प्रॉक्सी फ़्लो में इस्तेमाल करने के लिए उपलब्ध हों. AssignmentMessage नीति और JavaScript नीति जैसी नीतियों का इस्तेमाल करके वैरिएबल बनाए जा सकते हैं. साथ ही, Node.js कोड का इस्तेमाल करके भी वैरिएबल बनाए जा सकते हैं.
  • वैरिएबल का स्कोप होता है. उदाहरण के लिए, जब पहली प्रॉक्सी को किसी ऐप्लिकेशन से अनुरोध मिलता है, तो कुछ वैरिएबल अपने-आप भर जाते हैं. दूसरे वैरिएबल, प्रॉक्सी के रिस्पॉन्स फ़्लो सेगमेंट में पॉप्युलेट होते हैं. रिस्पॉन्स सेगमेंट के लागू होने तक, ये रिस्पॉन्स वैरिएबल तय नहीं होते.
  • जब नीतियां लागू होती हैं, तो वे नीति के हिसाब से वैरिएबल बना सकती हैं और उन्हें भर सकती हैं. हर नीति के दस्तावेज़ में, खास नीति से जुड़े इन सभी वैरिएबल की सूची होती है.
  • कंडिशनल फ़्लो आम तौर पर, एक या उससे ज़्यादा वैरिएबल का आकलन करते हैं. अगर आपको कंडिशनल फ़्लो बनाना है, तो आपको वैरिएबल को समझना होगा.
  • कई नीतियां, इनपुट या आउटपुट के तौर पर वैरिएबल का इस्तेमाल करती हैं. हो सकता है कि किसी एक नीति से बनाए गए वैरिएबल का इस्तेमाल, बाद में दूसरी नीति में किया जाता है.
  • सीधे JavaScript (और हमारा JavaScript ऑब्जेक्ट मॉडल) का इस्तेमाल करके Node.js में कई फ़्लो वैरिएबल पाएं और उन्हें सेट करें. इसके अलावा, Edge पर कोड चलाने वाली Java कॉलआउट नीति का इस्तेमाल किया जा सकता है.

मिलते-जुलते कोड सैंपल

एपीआई प्रॉक्सी सैंपल GitHub पर हैं. इन्हें डाउनलोड और इस्तेमाल करना आसान है. सैंपल डाउनलोड और इस्तेमाल करने के बारे में जानकारी के लिए, सैंपल एपीआई प्रॉक्सी का इस्तेमाल करना देखें. एपीआई प्रॉक्सी सैंपल की जानकारी और वे क्या करते हैं, इसके बारे में जानने के लिए, सैंपल सूची देखें.

वैरिएबल और वैरिएबल प्रोसेसिंग की सुविधा देने वाले सैंपल प्रॉक्सी में ये शामिल हैं:

  • वैरिएबल - ट्रांसपोर्ट और JSON और एक्सएमएल मैसेज के कॉन्टेंट के आधार पर, वैरिएबल एक्सट्रैक्ट करने और सेट करने का तरीका दिखाता है.
  • policy-mashup-cookbook - एक ऐसा पूरा ऐप्लिकेशन जो दो सार्वजनिक एपीआई को कॉल करने के लिए पॉलिसी कंपोज़िशन का इस्तेमाल करता है, एक साथ नतीजे देता है, और क्लाइंट ऐप्लिकेशन के लिए बेहतर रिस्पॉन्स जनरेट करता है. इस सैंपल के बारे में ज़्यादा जानकारी के लिए, नीति कंपोज़िशन का इस्तेमाल करना देखें.
  • conditional-policy - वैरिएबल वैल्यू के आधार पर, शर्त के साथ लागू होने वाली नीति को लागू करता है.

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

  • एपीआई प्रॉक्सी में अपने-आप भरे गए सभी वैरिएबल, फ़्लो वैरिएबल रेफ़रंस में शामिल किए गए हैं. रेफ़रंस में, हर वैरिएबल के टाइप और स्कोप की जानकारी भी शामिल होती है.
  • अगर आपको यह जानना है कि कोई खास नीति किन वैरिएबल में अपने-आप भर जाती है, तो नीति का रेफ़रंस विषय देखें. उदाहरण के लिए, कोटा नीति के रेफ़रंस में फ़्लो वैरिएबल देखें.