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

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

शुरुआती जानकारी

Node.js ऐप्लिकेशन में Apigee Edge के flow वैरिएबल को ऐक्सेस करने के लिए, apigee-access मॉड्यूल का इस्तेमाल करें. मॉड्यूल में वैरिएबल पाने, सेट करने, और मिटाने के तरीके होते हैं. इसमें इंटीजर वैरिएबल सेट करने का आसान तरीका भी मौजूद है.

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

apigee-access मॉड्यूल और इसकी अन्य सुविधाओं के बारे में जानने के लिए, apigee-access मॉड्यूल का इस्तेमाल करना देखें.

काम करने का उदाहरण

मान लें कि अनुरोध के फ़्लो पाथ पर चलने वाली Edge नीति, AuthenticatedUserId नाम का एक वैरिएबल सेट करती है. यह कोड उस वैरिएबल को ऐक्सेस करता है और उसे लॉग में प्रिंट करता है. इसके अलावा, यह कोड एक वैरिएबल सेट करता है. इसके बाद, उस वैरिएबल को किसी नीति से ऐक्सेस किया जा सकता है. इसके बारे में नीचे बताया गया है.

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

http.createServer(function (request, response) {
  // The request parameter must be a request object that came from the http module
  var userId = apigee.getVariable(request, 'AuthenticatedUserId');
  apigee.setVariable(request, "custom.foo", "Bar");
  console.log('Authenticated Apigee User ID is %s', userId);
  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/');

इस कोड को JavaScript फ़ाइल में कॉपी किया जा सकता है, इसे Edge पर डिप्लॉय किया जा सकता है, और इसे आज़माया जा सकता है. server.js फ़ाइल को कॉल करें. इसे डिप्लॉय करने के लिए, इनका इस्तेमाल करें:

apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access

ऐप्लिकेशन को Edge में डिप्लॉय करने के बाद, प्रॉक्सीEndpoint अनुरोध के फ़्लो में, नीचे दिए गए कॉन्फ़िगरेशन के साथ AssignmentsMessage नीति जोड़ें:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="AddUserId">
    <DisplayName>AddUserId</DisplayName>
    <FaultRules/>
    <Properties/>  
    <AssignVariable>
        <Name>AuthenticatedUserId</Name>
        <Value>ntesla</Value>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

इसके बाद, TargetEndpoint रिस्पॉन्स प्रीफ़्लो में एक और AssignmentsMessage नीति अटैच करें:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="SetHeader">
    <DisplayName>SetHeader</DisplayName>
    <FaultRules/>
    <Properties/>
    <Set>
        <Headers>
            <Header name="MySpecialHeader">{custom.foo}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

आप प्रॉक्सी को इस तरह कॉल कर सकते हैं:

curl -i http://myorg-test.apigee.net/access

अब, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में ऐक्सेस प्रॉक्सी के पेज पर जाएं और डेवलप करें व्यू को खोलें. प्रॉक्सी से लॉग आउटपुट देखने के लिए, Node.js लॉग पर क्लिक करें. अगर प्रॉक्सी को सही तरीके से कॉन्फ़िगर किया गया है, तो आपको दिखेगा कि userId वैरिएबल सेट किया गया था. आपको यह भी दिखेगा कि हेडर को आपकी टर्मिनल विंडो के cURL आउटपुट में सेट किया गया था:

HTTP/1.1 200 OK

Content-Type: text/plain
Date: Tue, 27 05 2014 23:20:52 GMT
MySpecialHeader: Bar
Content-Length: 12
Connection: keep-alive

तरीके


getVariable

var result = getVariable(httpRequest, name);

नाम वाला वैरिएबल पाता है.

पैरामीटर:

  • httpRequest: अनुरोध का वह ऑब्जेक्ट जो एचटीटीपी मॉड्यूल से मिलता है.
  • name: (स्ट्रिंग) वापस पाने के लिए, वैरिएबल का नाम.

सामान लौटाना:

वह स्ट्रिंग या संख्या जो setVariable() का इस्तेमाल करके सेट किए गए टाइप के आधार पर तय होती है, जब उसे आपने किसी दूसरी जगह बनाया था या जब किसी नीति ने उसे बनाया था. अगर आप किसी एक आउट-ऑफ़-द-बॉक्स एज वैरिएबल को ऐक्सेस कर रहे हैं, तो आपको वैरिएबल रेफ़रंस में टाइप की सूची मिल सकती है. नीतियों के हिसाब से बनाए गए वैरिएबल टाइप के लिए, नीति का रेफ़रंस विषय देखें.

उदाहरण:

var apigee = require('apigee-access');
    // "httpRequest" must be a request object that came from the http module
    var val1 = apigee.getVariable(request, 'TestVariable');
    var val2 = apigee.getVariable(request, 'request.client.ip');

setVariable

setVariable(httpRequest, name, value);

वैरिएबल सेट करता है. कुछ वैरिएबल रीड-ओनली होते हैं और अगर setVariable() तरीके में से किसी एक को सेट करने की कोशिश की जाती है, तो वह तरीका एक अपवाद दिखाता है. यह तय करने के लिए कि कौनसे वैरिएबल रीड-ओनली हैं, वैरिएबल का रेफ़रंस देखें.

पैरामीटर:

  • httpRequest: अनुरोध का वह ऑब्जेक्ट जो एचटीटीपी मॉड्यूल से मिलता है.
  • name: (स्ट्रिंग) वापस पाने के लिए, वैरिएबल का नाम.
  • value: यह कोई संख्या, स्ट्रिंग, बूलियन, शून्य या तय नहीं हो सकती है.

उदाहरण:

var apigee = require('apigee-access');
    apigee.setVariable(request, 'TestVariable', 'bar');
    // This will throw an exception because client.ip is read-only.
    apigee.setVariable(request, 'client.ip');
    

setIntVariable

setIntVariable(httpRequest, name, value);

setIntVariable() तरीका, सुविधा का एक ऐसा तरीका है जो पहले वैल्यू पैरामीटर को किसी पूर्णांक पर भेजता है. इसके बाद, इसे सेट किया जाता है.

पैरामीटर:

  • httpRequest: अनुरोध का वह ऑब्जेक्ट जो एचटीटीपी मॉड्यूल से मिलता है.
  • name: (स्ट्रिंग) सेट किए जाने वाले वैरिएबल का नाम.
  • value: वैल्यू पैरामीटर कोई स्ट्रिंग या संख्या होनी चाहिए.

उदाहरण:

var apigee = require('apigee-access');
// Convert "123" to an integer and set it
apigee.setIntVariable(request, 'TestVariable', '123');
// Use something that's already a number
apigee.setIntVariable(request, 'TestVariable2', 42);

deleteVariable

नाम वाले वैरिएबल को मिटाता है. रीड-ओनली वैरिएबल को मिटाना एक गड़बड़ी है. रीड-ओनली वैरिएबल की पूरी सूची देखने के लिए, वैरिएबल रेफ़रंस देखें.

deleteVariable(httpRequest, name);

पैरामीटर:

  • httpRequest: अनुरोध का वह ऑब्जेक्ट जो एचटीटीपी मॉड्यूल से मिलता है.
  • name: (स्ट्रिंग) मिटाए जाने वाले वैरिएबल का नाम.

उदाहरण:

  apigee.deleteVariable(request, 'TestVariable');
    // This will throw an exception because client.ip is a read-only variable.
    apigee.deleteVariable(request, 'client.ip');