आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
Edge में “मैनेजमेंट एपीआई” नाम की एक असरदार सुविधा होती है. यह इन जैसी सेवाएं उपलब्ध कराती है:
- एपीआई प्रॉक्सी को डिप्लॉय या अनडिप्लॉय करना
- वर्चुअल होस्ट, कीस्टोर, और ट्रस्टस्टोर वगैरह को कॉन्फ़िगर करना.
- KeyValueMaps, API प्रॉडक्ट, डेवलपर ऐप्लिकेशन, डेवलपर, उपभोक्ता कुंजियां वगैरह जैसी इकाइयों को बनाना, मिटाना और/या अपडेट करना.
- इन इकाइयों के बारे में जानकारी वापस लाई जा रही है
इन सेवाओं को Apigee Edge प्लैटफ़ॉर्म में, मैनेजमेंट सर्वर नाम के कॉम्पोनेंट के ज़रिए ऐक्सेस किया जा सकता है. इन सेवाओं को आसानी से चालू किया जा सकता है. इसके लिए, मैनेजमेंट एपीआई कॉल का इस्तेमाल किया जाता है.
कभी-कभी हमें रनटाइम के दौरान, एपीआई प्रॉक्सी से इन सेवाओं में से एक या उससे ज़्यादा सेवाओं का इस्तेमाल करना पड़ सकता है. ऐसा इसलिए है, क्योंकि KeyValueMaps, OAuth ऐक्सेस टोकन, एपीआई प्रॉडक्ट, डेवलपर ऐप्लिकेशन, डेवलपर, उपभोक्ता कुंजी वगैरह जैसी इकाइयों में काम की जानकारी होती है. यह जानकारी, की-वैल्यू पेयर, कस्टम एट्रिब्यूट या प्रोफ़ाइल के हिस्से के तौर पर होती है.
उदाहरण के लिए, KeyValueMap में इस जानकारी को सेव किया जा सकता है, ताकि इसे ज़्यादा सुरक्षित बनाया जा सके और रनटाइम के दौरान ऐक्सेस किया जा सके:
- बैक-एंड टारगेट यूआरएल
- एनवायरमेंट की प्रॉपर्टी
- बैकएंड या तीसरे पक्ष के सिस्टम के सुरक्षा क्रेडेंशियल
इसी तरह, आपको रनटाइम के दौरान एपीआई प्रॉडक्ट की सूची या डेवलपर का ईमेल पता मिल सकता है. यह जानकारी, डेवलपर के ऐप्लिकेशन की प्रोफ़ाइल में उपलब्ध होगी.
इस पूरी जानकारी का इस्तेमाल रनटाइम में किया जा सकता है. इससे Apigee Edge में नीतियों या कस्टम कोड में डाइनैमिक व्यवहार को चालू किया जा सकता है.
ऐंटीपैटर्न
मैनेजमेंट एपीआई, एडमिन से जुड़े कामों के लिए बेहतर और फ़ायदेमंद होते हैं. इनका इस्तेमाल, एपीआई प्रॉक्सी फ़्लो में किसी भी रनटाइम लॉजिक को लागू करने के लिए नहीं किया जाना चाहिए. ऐसा इसलिए होता है, क्योंकि:
- KeyValueMaps, OAuth ऐक्सेस टोकन जैसी इकाइयों के बारे में जानकारी ऐक्सेस करने के लिए, मैनेजमेंट एपीआई का इस्तेमाल किया जाता है. इसके अलावा, एपीआई प्रॉक्सी से किसी अन्य मकसद के लिए भी इनका इस्तेमाल किया जाता है. इससे मैनेजमेंट सर्वर पर निर्भरता बढ़ जाती है.
- मैनेजमेंट सर्वर, Edge रनटाइम कॉम्पोनेंट का हिस्सा नहीं होते. इसलिए, हो सकता है कि वे ज़्यादा उपलब्ध न हों.
- मैनेजमेंट सर्वर को एक ही नेटवर्क या डेटा सेंटर में उपलब्ध नहीं कराया जा सकता. इसलिए, रनटाइम के दौरान नेटवर्क में देरी हो सकती है.
- मैनेजमेंट सर्वर में मौजूद एंट्री को लंबे समय तक कैश मेमोरी में सेव किया जाता है. इसलिए, अगर हम कम समय में डेटा लिखते और पढ़ते हैं, तो हो सकता है कि हमें एपीआई प्रॉक्सी में तुरंत नया डेटा न दिखे.
- इससे रनटाइम में नेटवर्क हॉप बढ़ जाते हैं.
यहां दिए गए कोड के उदाहरण में, KeyValueMap से जानकारी पाने के लिए, कस्टम JavaScript कोड के ज़रिए मैनेजमेंट एपीआई कॉल किया गया है:
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
अगर मैनेजमेंट सर्वर उपलब्ध नहीं है, तो मैनेजमेंट एपीआई को कॉल करने वाला JavaScript कोड काम नहीं करेगा. इस वजह से, एपीआई अनुरोध पूरा नहीं हो पाता.
असर
- इससे रनटाइम के दौरान, मैनेजमेंट सर्वर पर अतिरिक्त निर्भरता बढ़ जाती है. मैनेजमेंट सर्वर में किसी भी तरह की गड़बड़ी होने पर, एपीआई कॉल पर असर पड़ेगा.
- मैनेजमेंट एपीआई के लिए उपयोगकर्ता के क्रेडेंशियल को स्थानीय तौर पर या किसी सुरक्षित जगह पर सेव किया जाना चाहिए. जैसे, एन्क्रिप्ट (सुरक्षित) किया गया KVM.
- नेटवर्क पर मैनेजमेंट सर्विस को चालू करने की वजह से परफ़ॉर्मेंस पर असर पड़ता है.
- मैनेजमेंट सर्वर में कैश मेमोरी के खत्म होने में ज़्यादा समय लगता है. इसलिए, हो सकता है कि आपको अपडेट की गई वैल्यू तुरंत न दिखें.
सबसे सही तरीका
रंटाइम में, KeyValueMaps, API प्रॉडक्ट, DeveloperApps, Developers, Consumer Keys वगैरह जैसी इकाइयों से जानकारी पाने के ज़्यादा असरदार तरीके हैं. यहां कुछ उदाहरण दिए गए हैं:
- KeyValueMaps से जानकारी ऐक्सेस करने के लिए, KeyValueMapOperations नीति का इस्तेमाल करें. यहां सैंपल कोड दिया गया है. इससे पता चलता है कि KeyValueMap से जानकारी कैसे मिलती है:
<!-- /antipatterns/examples/2-6.xml --> <KeyValueMapOperations mapIdentifier="urlMap" async="false" continueOnError="false" enabled="true" name="GetURLKVM"> <DisplayName>GetURLKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="urlHosti" index="2"> <Key> <Parameter>urlHost_1</Parameter> </Key> </Get> </KeyValueMapOperations>
- एपीआई प्रॉक्सी में एपीआई प्रॉडक्ट, डेवलपर ऐप्लिकेशन, डेवलपर, उपभोक्ता कुंजियां वगैरह के बारे में जानकारी ऐक्सेस करने के लिए, इनमें से कोई एक काम करें:
- अगर आपके एपीआई प्रॉक्सी फ़्लो में VerifyAPIKey नीति है, तो इस नीति के तहत पॉप्युलेट किए गए फ़्लो वैरिएबल का इस्तेमाल करके, जानकारी ऐक्सेस की जा सकती है. यहां सैंपल कोड दिया गया है. इससे पता चलता है कि JavaScript का इस्तेमाल करके, डेवलपर ऐप्लिकेशन का नाम और उसे बनाने वाले व्यक्ति की जानकारी कैसे पाई जा सकती है:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- अगर आपके एपीआई प्रॉक्सी फ़्लो में VerifyAPIKey नीति नहीं है, तो Access Entity और Extract Variables नीतियों का इस्तेमाल करके, एपीआई प्रॉडक्ट, डेवलपर ऐप्लिकेशन वगैरह की प्रोफ़ाइलों को ऐक्सेस किया जा सकता है:
- AccessEntity नीति का इस्तेमाल करके, DeveloperApp की प्रोफ़ाइल वापस पाएं:
<!-- /antipatterns/examples/2-8.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetDeveloperApp"> <DisplayName>GetDeveloperApp</DisplayName> <EntityType value="app"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
- ExtractVariables नीति का इस्तेमाल करके, DeveloperApp से
appIdनिकालें:<!-- /antipatterns/examples/2-9.xml --> <ExtractVariables name="Extract-Developer App-Info"> <!-- The source element points to the variable populated by AccessEntity policy. The format is <policy-type>.<policy-name> In this case, the variable contains the whole developer profile. --> <Source>AccessEntity.GetDeveloperApp"</Source> <VariablePrefix>developerapp</VariablePrefix> <XMLPayload> <Variable name="appld" type="string"> <!-- You parse elements from the developer profile using XPath. --> <XPath>/App/AppId</XPath> </Variable> </XMLPayload> </ExtractVariables>
- AccessEntity नीति का इस्तेमाल करके, DeveloperApp की प्रोफ़ाइल वापस पाएं:
- अगर आपके एपीआई प्रॉक्सी फ़्लो में VerifyAPIKey नीति है, तो इस नीति के तहत पॉप्युलेट किए गए फ़्लो वैरिएबल का इस्तेमाल करके, जानकारी ऐक्सेस की जा सकती है. यहां सैंपल कोड दिया गया है. इससे पता चलता है कि JavaScript का इस्तेमाल करके, डेवलपर ऐप्लिकेशन का नाम और उसे बनाने वाले व्यक्ति की जानकारी कैसे पाई जा सकती है: