किसी मौजूदा एपीआई प्रॉक्सी में Node.js को जोड़ना

यह Apigee Edge के दस्तावेज़ हैं.
पर जाएं Apigee X के दस्तावेज़ों.
info

परिचय

इस विषय में, Node.js ऐप्लिकेशन को अपने लोकल फ़ाइल सिस्टम पर मौजूद किसी मौजूदा प्रॉक्सी में जोड़ने और प्रॉक्सी को Apigee Edge पर डिप्लॉय करने का तरीका बताया गया है.

डेवलपमेंट एनवायरमेंट तैयार करना

इस विषय में, हम मानकर चलते हैं कि आपके लोकल सिस्टम पर प्रॉक्सी डेवलपमेंट एनवायरमेंट पहले से सेट अप है और आपको इसमें Node.js ऐप्लिकेशन इंटिग्रेट करना है.

Node.js ऐप्लिकेशन वाले प्रॉक्सी ऐप्लिकेशन का बुनियादी स्ट्रक्चर, नीचे दी गई इमेज में दिखाए गए पैटर्न के मुताबिक होता है. इसमें /apiproxy फ़ोल्डर और रिसॉर्स, टारगेट, और प्रॉक्सी के लिए सब-फ़ोल्डर होते हैं. apiproxy/resources/node फ़ोल्डर में, Node.js फ़ाइलें सेव की जाती हैं. अन्य फ़ोल्डर में एक्सएमएल फ़ाइलें होती हैं. इनमें प्रॉक्सी और टारगेट एंडपॉइंट, प्रॉक्सी फ़्लो, शर्तों के हिसाब से फ़्लो वगैरह की जानकारी होती है. एपीआई प्रॉक्सी के स्ट्रक्चर के बारे में ज़्यादा जानकारी के लिए, एपीआई प्रॉक्सी कॉन्फ़िगरेशन रेफ़रंस देखें.

बस यह याद रखें कि प्रॉक्सी के Node.js कोड को /apiproxy/resources/node में सेव करना होगा. Edge पर डिप्लॉय करने पर, Edge को यह कोड इसी जगह पर मिलता है.

ScriptTarget की मदद से Node.js टारगेट तय करना

किसी प्रॉक्सी में Node.js को इंटिग्रेट करने के लिए, टारगेट एंडपॉइंट की एक्सएमएल फ़ाइल में <ScriptTarget> एलिमेंट तय करना ज़रूरी है. प्रॉक्सी फ़ाइल स्ट्रक्चर में, यह एक्सएमएल फ़ाइल apiproxy/targets में मौजूद होती है. डिफ़ॉल्ट रूप से, फ़ाइल का नाम default.xml. होता है.

जानकारी के लिए बता दें कि टारगेट एंडपॉइंट आम तौर पर किसी तरह की बैकएंड सेवा की ओर इशारा करता है. इस मामले में, हम Apigee की मॉक टारगेट सेवा का इस्तेमाल करते हैं. टारगेट एंडपॉइंट की परिभाषा इस तरह दिखती है:

<TargetEndpoint name="default">
    <Description/>
    <Flows/>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
    <HTTPTargetConnection>
        <URL>http://mocktarget.apigee.net/</URL>
    </HTTPTargetConnection>
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
</TargetEndpoint>

<HTTPTargetConnection> एलिमेंट, बैकएंड सेवा का यूआरएल तय करता है. यह Apigee मॉक टारगेट सेवा है.

हालांकि, Node.js के मामले में, the Node.js ऐप्लिकेशन खुद टारगेट होता है. इसे <ScriptTarget> की मदद से apiproxy/targets/default.xml फ़ाइल में तय किया जाता है.

बैकएंड सेवा का यूआरएल तय करने के लिए, टारगेट <HTTPTargetConnection> एलिमेंट का इस्तेमाल करने के बजाय, Node.js ऐप्लिकेशन को सीधे <ScriptTarget> एलिमेंट का इस्तेमाल करके रेफ़र किया जाता है. जैसे:

<TargetEndpoint name="default">
    <ScriptTarget>
         <ResourceURL>node://server.js</ResourceURL>
    </ScriptTarget>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
</TargetEndpoint>

<ResourceURL> पैरामीटर के पहले हमेशा node:// होना चाहिए. इसके बाद, मुख्य Node.js स्क्रिप्ट का नाम होना चाहिए. साथ ही, जैसा कि पहले बताया गया है, Node.js रिसॉर्स, एपीआई प्रॉक्सी स्कोप में /apiproxy/resources/node में होने चाहिए.

ScriptTarget में अतिरिक्त पैरामीटर सेट किए जा सकते हैं. ज़्यादा जानकारी के लिए, ScriptTarget का बेहतर कॉन्फ़िगरेशन देखें.

इस उदाहरण के लिए, यहां मुख्य Node.js फ़ाइल का सोर्स कोड दिया गया है. इसे server.js कहा जाता है. यह बुनियादी एचटीटीपी सर्वर है, जो अनुरोध मिलने पर "Hello World!" दिखाता है:

var http = require('http');
console.log('node.js application starting...');
var svr = http.createServer(function(req, resp) {
    resp.end('Hello, Node!');
});

svr.listen(process.env.PORT || 9000, function() {
    console.log('Node HTTP server is listening');
});

संक्षेप में, मान लें कि मुख्य Node.js ऐप्लिकेशन को server.js नाम की फ़ाइल में लागू किया गया है और एंडपॉइंट कॉन्फ़िगरेशन, दोनों का नाम default.xml है. ऐसे में, Node.js स्क्रिप्ट वाली एपीआई प्रॉक्सी का स्ट्रक्चर इस तरह होगा:

/apiproxy/proxyName.xml
/apiproxy/proxies/default.xml
/apiproxy/targets/default.xml
/apiproxy/resources/node/server.js

ऐप्लिकेशन डिप्लॉय करने की तैयारी करना

ज़्यादातर Node.js ऐप्लिकेशन में डिपेंडेंसी फ़ाइलें होती हैं. साथ ही, इनमें बेस डायरेक्ट्री में package.json फ़ाइल शामिल होती है. इस मामले में, सबसे सही तरीका यह है कि डिप्लॉय करने से पहले, npm यूटिलिटी चलाएं, ताकि यह पक्का किया जा सके कि टॉप-लेवल node_modules डायरेक्ट्री में डिपेंडेंसी मौजूद हैं. अगर node_modules में कोई रिमोट डिपेंडेंसी शामिल नहीं है, तो आपका Node.js ऐप्लिकेशन Edge पर नहीं चलेगा.

npm यूटिलिटी का इस्तेमाल करके, अपने फ़ाइल सिस्टम पर सभी डिपेंडेंसी आसानी से वापस पाई जा सकती हैं:

  1. अपने Node.js ऐप्लिकेशन की बेस डायरेक्ट्री से, यह निर्देश चलाएं:
$ npm install 

या

$ npm update

डिपेंडेंसी इंस्टॉल होने के बाद, प्रॉक्सी को Edge पर डिप्लॉय किया जा सकता है.

Node.js ऐप्लिकेशन को Apigee Edge पर डिप्लॉय करना

डिप्लॉय करने से पहले, आपको अपने Apigee Edge खाते के लिए संगठन का नाम, उपयोगकर्ता नाम, और पासवर्ड पता होना चाहिए. डिप्लॉयमेंट टूल का निर्देश सही तरीके से बनाने के लिए, आपको इस जानकारी की ज़रूरत होगी.

यहां निर्देश दिया गया है. इसमें यह मान लिया जाता है कि -d फ़्लैग के साथ, आप अपनी प्रॉक्सी की रूट डायरेक्ट्री में हैं. अगर आपकी प्रॉक्सी का नाम foo है, तो foo डायरेक्ट्री से यह निर्देश डालें:

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
हर निर्देश फ़्लैग का मतलब जानने के लिए, यह तरीका अपनाएं:

$ apigeetool deployproxy -h

यहां इसकी खास जानकारी दी गई है:

  • -n इस फ़्लैग की मदद से, उस प्रॉक्सी का नाम तय किया जा सकता है जो ऐप्लिकेशन डिप्लॉय होने पर बनेगी. आपको यह नाम, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में दिखेगा.
  • -d एपीआई प्रॉक्सी की रूट डायरेक्ट्री तय करता है.
  • -o, -e, -u, और -p, संगठन का नाम, डिप्लॉयमेंट एनवायरमेंट, उपयोगकर्ता नाम, और पासवर्ड तय करते हैं.
बस इतना ही. आपका Node.js ऐप्लिकेशन, एपीआई प्रॉक्सी में रैप किया जाता है. इसे Edge पर डिप्लॉय किया जाता है और यह चलता है. यह अनुरोधों का इंतज़ार कर रहा है और इसे टेस्ट किया जा सकता है.

नई एपीआई प्रॉक्सी को टेस्ट करना

आपने किसी मौजूदा एपीआई प्रॉक्सी में Node.js ऐप्लिकेशन जोड़ा है और प्रॉक्सी को Apigee Edge पर डिप्लॉय किया है! इसे टेस्ट करने के लिए, cURL का यह निर्देश चलाएं. हम मानकर चलते हैं कि डिफ़ॉल्ट बेस पाथ (/) का इस्तेमाल किया गया है. बेस पाथ प्रॉक्सी एंडपॉइंट कॉन्फ़िगरेशन फ़ाइल में तय किया जाता है. org_name की जगह, अपने संगठन का नाम डालें. अगर cURL इंस्टॉल नहीं है, तो ब्राउज़र में यूआरएल डाला जा सकता है.

$ curl http://org_name-test.apigee.net/
Hello, Node!

मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में नई प्रॉक्सी देखना

अपने Apigee Edge खाते में लॉग इन करें और एपीआई प्रॉक्सी पेज पर जाएं. आपको वहां "hellonode" नाम की प्रॉक्सी दिखेगी.

प्रॉक्सी के बारे में जानकारी देखने के लिए, "hellonode" पर क्लिक करें. डेवलप व्यू में, अपलोड किया गया सोर्स कोड देखा जा सकता है. साथ ही, नीतियां जोड़ी जा सकती हैं, फ़्लो में बदलाव किया जा सकता है वगैरह.

अगले चरण

Apigee Edge पर चल रहे Node.js ऐप्लिकेशन को डीबग करने के बारे में जानकारी के लिए, Node.js प्रॉक्सी को डीबग करना और उनकी समस्याएं हल करना लेख पढ़ें.