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

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

परिचय

Node.js ऐप्लिकेशन में Apigee Edge के फ़्लो वैरिएबल को ऐक्सेस करने के लिए, 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 पर ऐप्लिकेशन को डिप्लॉय करने के बाद, ProxyEndpoint अनुरोध फ़्लो में, नीचे दिए गए कॉन्फ़िगरेशन के साथ AssignMessage नीति जोड़ें:

<?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 के रिस्पॉन्स प्रीफ़्लो में, AssignMessage की एक और नीति अटैच करें:

<?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: http मॉड्यूल से मिलने वाला अनुरोध ऑब्जेक्ट.
  • name: (स्ट्रिंग) उस वैरिएबल का नाम जिसे वापस पाना है.

लौटाए जाने वाले प्रॉडक्ट:

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

उदाहरण:

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: http मॉड्यूल से मिलने वाला अनुरोध ऑब्जेक्ट.
  • 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: http मॉड्यूल से मिलने वाला अनुरोध ऑब्जेक्ट.
  • 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: http मॉड्यूल से मिलने वाला अनुरोध ऑब्जेक्ट.
  • name: (स्ट्रिंग) मिटाए जाने वाले वैरिएबल का नाम.

उदाहरण:

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