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

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

परिचय

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

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

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 पर डिप्लॉय करने के बाद, यहां दिए गए तरीकों के साथ PendingMessage नीति जोड़ें ProxyEndpoint अनुरोध के फ़्लो का कॉन्फ़िगरेशन:

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

<?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() का इस्तेमाल करके किस टाइप के लिए सेट किया गया है, जब यह जिन्हें आपने कहीं और बनाया हो या जब किसी नीति ने बनाया हो. अगर आपको इनमें से किसी एक एक अलग तरह के एज वैरिएबल का इस्तेमाल करके, वैरिएबल रेफ़रंस में अलग-अलग तरह के टाइप की सूची देखी जा सकती है. वैरिएबल टाइप के लिए नीतियों के मुताबिक बनाया गया है, तो नीति से जुड़े खास विषय देखें.

उदाहरण:

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