आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
इस विषय में, आपको डाइनैमिक तरीके से एचटीटीपी हेडर जोड़ने के लिए JavaScript का इस्तेमाल करने का तरीका बताया जाएगा रिस्पॉन्स मैसेज के साथ-साथ JSON जवाब को पार्स करने और इसकी प्रॉपर्टी का सबसेट अनुरोध करने वाला ऐप्लिकेशन.
सैंपल कोड डाउनलोड करें और आज़माएं
इस कुकबुक के उदाहरण के बारे में जानकारी
कुकबुक के इस उदाहरण में, ऐसे एपीआई प्रॉक्सी पैटर्न के बारे में बताया गया है जिसमें एपीआई की कार्रवाई को JavaScript. JavaScript के उदाहरण आपको आसान वैरिएबल से काम करने का तरीका दिखाने के लिए डिज़ाइन किए गए हैं और मैसेज का कॉन्टेंट शामिल है. एक सैंपल में, वैरिएबल पाने और सेट करने का तरीका बताया गया है. दूसरा उदाहरण में आपको JSON को पार्स करने और नतीजे से मैसेज बनाने का तरीका बताया गया है.
एपीआई प्रॉक्सी में दो JavaScript सैंपल हैं:
setHeaders.js
: इस JavaScript को कुछ ऐसे वैरिएबल की वैल्यू मिलती हैं जो एपीआई प्रॉक्सी को शुरू करने पर सेट किए जाते हैं. JavaScript उन वैरिएबल को रिस्पॉन्स में जोड़ता है ताकि आप अपने हर अनुरोध के लिए उनकी वैल्यू देख सकें.minimize.js
: यह JavaScript आपको मैसेज के साथ काम करने का तरीका दिखाता है कॉन्टेंट. इस नमूने के पीछे का सिद्धांत यह है कि कोई सेवा अक्सर दिए गए डेटा से ज़्यादा डेटा वापस भेजती है ज़रूरी है. इसलिए, JavaScript रिस्पॉन्स मैसेज को पार्स करता है और कुछ दिलचस्प जानकारी प्रॉपर्टी सेट करता है और फिर रिस्पॉन्स मैसेज का कॉन्टेंट बनाने के लिए उनका इस्तेमाल करता है.
setHeader.js
का कोड:
context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name")); context.setVariable("response.header.X-Apigee-ApiProxyName", context.getVariable("apiproxy.name")); context.setVariable("response.header.X-Apigee-ProxyName", context.getVariable("proxy.name")); context.setVariable("response.header.X-Apigee-ProxyBasePath", context.getVariable("proxy.basepath")); context.setVariable("response.header.X-Apigee-ProxyPathSuffix", context.getVariable("proxy.pathsuffix")); context.setVariable("response.header.X-Apigee-ProxyUrl", context.getVariable("proxy.url"));
minimize.js
का कोड:
// Parse the respose from the target. var res = JSON.parse(context.proxyResponse.content); // Pull out only the information we want to see in the response. var minimizedResponse = { city: res.root.city, state: res.root.state }; // Set the response variable. context.proxyResponse.content = JSON.stringify(minimizedResponse);
कॉन्टेक्स्ट ऑब्जेक्ट के ज़रिए JavaScript में फ़्लो वैरिएबल को ऐक्सेस किया जा सकता है. यह ऑब्जेक्ट इसका हिस्सा है Edge JavaScript ऑब्जेक्ट मॉडल है. ऑब्जेक्ट मॉडल के बारे में जानकारी के लिए, JavaScript ऑब्जेक्ट मॉडल देखें.
शुरू करने से पहले
कुकबुक के इस उदाहरण को एक्सप्लोर करने से पहले, आपको इन बुनियादी बातों के बारे में भी जानकारी होनी चाहिए कॉन्सेप्ट:
- नीतियां क्या हैं और उन्हें प्रॉक्सी से कैसे अटैच किया जा सकता है. नीतियों के बारे में अच्छी तरह जानने के लिए, देखें Google News पर की नीति है?.
- प्रॉक्सी फ़्लो का स्ट्रक्चर, जैसा कि फ़्लो कॉन्फ़िगर करना में बताया गया है. फ़्लो आपको वह क्रम तय करें जिसमें एपीआई प्रॉक्सी की मदद से नीतियां लागू की जाती हैं. इस उदाहरण में, कई नीतियां बनाई जाती हैं और एपीआई प्रॉक्सी फ़्लो में जोड़ी जाती हैं.
- आपके फ़ाइल सिस्टम पर एपीआई प्रॉक्सी प्रोजेक्ट को कैसे व्यवस्थित किया जाता है, जैसा कि यहां बताया गया है एपीआई प्रॉक्सी कॉन्फ़िगरेशन का रेफ़रंस.
- एक्सएमएल, JSON, और JavaScript पर काम करने की जानकारी. इस उदाहरण में, आपने एपीआई को बनाया है प्रॉक्सी और उसकी नीतियों के साथ काम करती है, जो फ़ाइल सिस्टम पर मौजूद होती हैं.
अगर आपने सैंपल कोड डाउनलोड कर लिया है, तो उसमें बताई गई सभी फ़ाइलें ढूंढी जा सकती हैं विषय को javascript-cookbook के सैंपल फ़ोल्डर में सेव करें. इन सेक्शन में, कृपया सैंपल कोड की ज़्यादा जानकारी दें.
प्रॉक्सी फ़्लो को समझना
JavaScript को एपीआई प्रॉक्सी में एक्ज़ीक्यूट करने के लिए, आपको किसी नीति का इस्तेमाल करके उसे फ़्लो में अटैच करना होगा 'चरण' नाम का अटैचमेंट. JavaScript टाइप की नीति (नोट में कैपिटल लेटर का इस्तेमाल) में सिर्फ़ यह शामिल होता है जिसमें JavaScript फ़ाइल के नाम से संबंधित जानकारी शामिल है. नीति को JavaScript फ़ाइल की ओर पॉइंट करने के लिए इसका इस्तेमाल किया जाता है ResourceURL एलिमेंट.
उदाहरण के लिए, नीचे दी गई नीति में उस JavaScript फ़ाइल का रेफ़रंस दिया गया है जिसे
setHeader.js
.
<Javascript name='setHeaders' timeLimit='200'> <ResourceURL>setHeaders.js</ResourceURL> </Javascript>अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस नीति को किसी अन्य नीति की तरह ही एपीआई प्रॉक्सी फ़्लो में भी अटैच किया जा सकता है. इन्होंने बदलाव किया है एपीआई प्रॉक्सी फ़्लो में नीति अटैच करके, आपको यह जानकारी देनी होती है कि JavaScript कहां लागू होना चाहिए. इससे आपको JavaScript चलाने की सुविधा मिलती है, जो अनुरोध वाले मैसेज या रिस्पॉन्स मैसेज के साथ इंटरैक्ट करता है जैसे कि 'flow' का इस्तेमाल किया जा सकता है. इस उदाहरण में, दोनों JavaScript रिस्पॉन्स फ़्लो के लिए एक सेट है, क्योंकि नीतियां दो काम करती हैं: रिस्पॉन्स मैसेज पर एचटीटीपी हेडर सेट करें और 'छोटा करें' यह रिस्पॉन्स मैसेज, Apigee Edge के लिए अनुरोध करने वाले ऐप्लिकेशन पर वापस आता है.
इस फ़्लो कॉन्फ़िगरेशन को मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में खोलने पर, आपको फ़्लो कॉन्फ़िगरेशन दिखेगा देखें.
प्रॉक्सी एंडपॉइंट > डिफ़ॉल्ट > नेविगेटर में PostFlow पैनल में खोलें.
ProxyEndpoint के लिए, 'default' नाम से जुड़ा एक्सएमएल कॉन्फ़िगरेशन दिखाया गया है देखें.
<ProxyEndpoint name="default"> <PostFlow> <Response> <!-- Steps reference policies under /apiproxy/policies --> <!-- First, set a few HTTP headers with variables for this transaction. --> <Step><Name>setHeaders</Name></Step> <!-- Next, transform the response from XML to JSON for easier parsing with JavaScript --> <Step><Name>transform</Name></Step> <!-- Finally, use JavaScript to create minimized response with just city and state. --> <Step><Name>minimize</Name></Step> </Response> </PostFlow> <HTTPProxyConnection> <!-- BasePath defines the network address for this API proxy. See the script 'invoke.sh' to see how the complete URL for this API proxy is constructed.--> <BasePath>/javascript-cookbook</BasePath> <!-- Set VirtualHost to 'secure' to have this API proxy listen on HTTPS. --> <VirtualHost>default</VirtualHost> </HTTPProxyConnection> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
यहां फ़्लो के एलिमेंट की खास जानकारी दी गई है.
- <Request> - <अनुरोध> एलिमेंट में कई <Step> एलिमेंट. हर चरण में उन नीतियों में से एक नीति लागू होती है जिन्हें आपने बाकी खातों के ज़रिए बनाया है इस विषय. ये नीतियां एपीआई के प्रॉक्सी फ़्लो में एक JavaScript जोड़ती हैं, और नीति अटैचमेंट से तय होता है कि JavaScript कब लागू होगा.
- <Response> - <Response> एलिमेंट में यह भी शामिल है
<Steps>. इन चरणों में उन नीतियों के लिए भी कॉल किया जा सकता है जो फ़ाइनल कन्वर्ज़न प्रोसेस करने के लिए ज़िम्मेदार हैं
(जो इस उदाहरण में Apigee की मॉक सर्विस टारगेट है--ध्यान दें कि
/apiproxy/targets/default.xml
में HTTPTargetConnection सेटिंग.) - <HTTPProxyConnection> - यह होस्ट और यूआरआई पाथ बताता है
वह नेटवर्क पता तय करें जिसे ऐप्लिकेशन इस एपीआई का इस्तेमाल करने के लिए कॉल करते हैं.
- <RouteRule> - यह एलिमेंट बताते हैं कि कौनसा TargetEndpoint है कॉन्फ़िगरेशन को ProxyEndpoint से शुरू किया जाता है.
प्रॉक्सी में JavaScript कोड जोड़ना
JavaScript (जैसे कि Python स्क्रिप्ट, Java JAR फ़ाइलें, XSLT फ़ाइलें वगैरह) को इस तरह सेव किया जाता है संसाधन. जब आप JavaScript के साथ काम करना शुरू कर रहे हों, तो एपीआई प्रॉक्सी में JavaScript फ़ाइलें. आगे बढ़ने पर, JavaScript को जेनरिक और ऐसा हो सकता है कि उसे फिर से इस्तेमाल किया जा सके. इसके बाद, उसे एनवायरमेंट या संगठन के लेवल पर सेव किया जाता है. यह आपको एक ही JavaScript फ़ाइल को कई एपीआई प्रॉक्सी में सेव करने से रोकता है, हो सकता है कि वे मैनेज न किए जा सकें.
संसाधनों को संगठन और पर्यावरण के स्तर पर सेव करने के बारे में जानने के लिए, संसाधन फ़ाइलें देखें.
इसे आज़माएं
प्रॉक्सी को डिप्लॉय और कॉल करने के निर्देशों के लिए, JavaScript कुकबुक README.
इंपोर्ट करना और डिप्लॉय करना एपीआई प्रॉक्सी
बदलाव करने के बाद, एपीआई प्रॉक्सी बिल्डर में एपीआई प्रॉक्सी को सेव किया जा सकता है टूल की मदद से, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में देखें.
या डायरेक्ट्री में यहां दिया गया कमांड भी चलाया जा सकता है
/api-platform-samples/doc-samples/javascript-cookbook
.
$ sh deploy.sh
JavaScript की जांच करना
डायरेक्ट्री में यहां दिया गया कमांड चलाएं
/api-platform-samples/doc-samples/javascript-cookbook
.
$ sh invoke.sh
रिस्पॉन्स में एचटीटीपी हेडर देखने के लिए कर्ल फ़्लैग -v
का इस्तेमाल शेल स्क्रिप्ट में किया जाता है
JavaScript से बदला गया मैसेज.
अनुरोध सीधे तौर पर सबमिट किया जा सकता है. इसके लिए, यह तरीका अपनाएं:
$ curl -v http://{org_name}-test.apigee.net/javascript-cookbook
अगर JavaScript ठीक से काम करता है, तो आपको कुछ ऐसा दिखेगा:
< X-Apigee-Demo-Target: default < X-Apigee-Demo-ApiProxyName: simple-javascript < X-Apigee-Demo-ProxyName: default < X-Apigee-Demo-ProxyBasePath: /javascript-cookbook < X-Apigee-Demo-ProxyPathSuffix: /xml < X-Apigee-Demo-ProxyUrl: http://rrt331ea.us-ea.4.apigee.com/javascript-cookbook/xml {"city":"San Jose","state":"CA"}
अब JavaScript में बदलाव करके, नई चीज़ें आज़माई जा सकती हैं, एपीआई प्रॉक्सी को फिर से डिप्लॉय किया जा सकता है, और समान अनुरोध सबमिट करके परिणाम देखें. हमेशा यह पक्का करें कि आप उस एपीआई प्रॉक्सी को डिप्लॉय करते हैं जिसमें यह शामिल है JavaScript में बदलाव कर सकते हैं.
स्क्रिप्ट से जुड़ी गड़बड़ियां
JavaScript लिखते समय आपको आम तौर पर गड़बड़ियां दिखेंगी. ऐसी JavaScript गड़बड़ियों का फ़ॉर्मैट जो जिन्हें एपीआई प्रॉक्सी ने जारी किया है उन्हें नीचे दिखाया गया है.
{ "fault":{ "faultstring":"Execution of rewriteTargetUrl failed with error: Javascript runtime error: \"TypeError: Cannot find function getVariable in object TARGET_REQ_FLOW. (rewriteTargetUrl_js#1). at line 1 \"", "detail":{ "errorcode":"steps.javascript.ScriptExecutionFailed" } } }
JavaScript का इस्तेमाल कब करना चाहिए
आम तौर पर, Apigee Edge पर किसी फ़ंक्शन को लागू करने के एक से ज़्यादा तरीके होते हैं. इस्तेमाल की जाने वाली चीज़ें जहां हो सके, सभी नीतियों का पालन करें. साथ ही, अपने पूरे एपीआई प्रॉक्सी को कोड करने की समस्या से बचें JavaScript में लॉजिक. Apigee Edge, सिस्टम को बेहतर बनाने के लिए, कंपाइल किए गए JavaScript का इस्तेमाल करता है नहीं डाला है, तो इस बात की संभावना नहीं है कि JavaScript नीतियों के मुताबिक काम करेगा. JavaScript इनमें से कोई भी हो सकती है को बनाए रखना और डीबग करना ज़्यादा मुश्किल होता है. JavaScript को उस सुविधा के लिए रिज़र्व करें जो यूनीक है ज़रूरतें.
अगर कस्टम फंक्शन के लिए प्रदर्शन चिंता का विषय है, तो जहां संभव हो Java का इस्तेमाल करें.
खास जानकारी
कुकबुक के इस विषय में, आपने सीखा कि एपीआई प्रॉक्सी में JavaScript को कैसे शामिल किया जा सकता है कस्टम व्यवहार लागू करने के लिए कॉन्फ़िगरेशन. सैंपल की मदद से लागू किया गया कस्टम व्यवहार यह दिखाने के लिए कि JSON को कैसे पार्स किया जाता है और वैरिएबल कैसे पाए जाते हैं. साथ ही, यह भी बताया जाता है कि JSON को पार्स करने और कस्टम रिस्पॉन्स बनाने का तरीका क्या है मैसेज.