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');