আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
Edge-এ "ম্যানেজমেন্ট API" নামে একটি শক্তিশালী ইউটিলিটি আছে যা এই ধরনের পরিষেবা প্রদান করে:
- API প্রক্সি ডেপ্লয় করা বা ডেপ্লয়মেন্ট প্রত্যাহার করা
- ভার্চুয়াল হোস্ট, কীস্টোর ও ট্রাস্টস্টোর ইত্যাদি কনফিগার করা।
- KeyValueMaps, API প্রোডাক্ট, Developer অ্যাপ, ডেভেলপার, Consumer Keys ইত্যাদি এন্টিটি তৈরি, মুছে দেওয়া এবং/অথবা আপডেট করা।
- এইসব এন্টিটি সম্পর্কে তথ্য পাওয়া
এইসব পরিষেবা Apigee Edge প্ল্যাটফর্মে ম্যানেজমেন্ট সার্ভার নামক একটি কম্পোনেন্টের মাধ্যমে অ্যাক্সেস করা যায়। সহজ ম্যানেজমেন্ট API কলের সাহায্যে এইসব পরিষেবা সহজেই ইনভোক করা যায়।
কখনও কখনও রানটাইমে API প্রক্সি থেকে আমাদের এইসব পরিষেবার একটি বা একাধিক ব্যবহার করতে হতে পারে। এর কারণ হল, KeyValueMaps, OAuth অ্যাক্সেস টোকেন, API প্রোডাক্ট, ডেভেলপার অ্যাপ, ডেভেলপার, কনজিউমার কী ইত্যাদি এন্টিটিতে কী-ভ্যালু পেয়ার, কাস্টম অ্যাট্রিবিউট বা এর প্রোফাইলের অংশ হিসেবে প্রয়োজনীয় তথ্য থাকে।
যেমন, রানটাইমে আরও সুরক্ষিত ও অ্যাক্সেসযোগ্য করে তুলতে, আপনি KeyValueMap-এ নিম্নলিখিত তথ্য সেভ করতে পারেন:
- ব্যাক-এন্ড টার্গেট URL
- পরিবেশের প্রপার্টি
- ব্যাকএন্ড বা থার্ড-পার্টি সিস্টেমের নিরাপত্তা সংক্রান্ত ক্রেডেনশিয়াল
একইভাবে, রানটাইমে আপনি API প্রোডাক্টের তালিকা বা ডেভেলপারের ইমেল আইডি পেতে চাইতে পারেন। এই তথ্য ডেভেলপার অ্যাপ প্রোফাইলের অংশ হিসেবে উপলভ্য থাকবে।
Apigee Edge-এর মধ্যে নীতি বা কাস্টম কোডে ডায়নামিক আচরণ চালু করতে, রানটাইমে এই সমস্ত তথ্য কার্যকরভাবে ব্যবহার করা যেতে পারে।
অ্যান্টিপ্যাটার্ন
ম্যানেজমেন্ট API হল পছন্দের এবং প্রশাসনিক টাস্কের জন্য উপযোগী এবং API প্রক্সি ফ্লোতে কোনও রানটাইম লজিক পারফর্ম করার জন্য এটি ব্যবহার করা উচিত নয়। এর কারণ:
- KeyValueMaps, OAuth অ্যাক্সেস টোকেনের মতো এন্টিটি সম্পর্কে তথ্য অ্যাক্সেস করতে ম্যানেজমেন্ট API ব্যবহার করা বা API প্রক্সি থেকে অন্য কোনও উদ্দেশ্যে ব্যবহার করলে ম্যানেজমেন্ট সার্ভারের উপর নির্ভরতা তৈরি হয়।
- ম্যানেজমেন্ট সার্ভারগুলি Edge রানটাইম কম্পোনেন্টের অংশ নয় এবং তাই, সেগুলি খুব বেশি উপলভ্য নাও থাকতে পারে।
- ম্যানেজমেন্ট সার্ভার একই নেটওয়ার্ক বা ডেটা সেন্টারে প্রোভিশন করা নাও হতে পারে এবং এর ফলে রানটাইমে নেটওয়ার্ক লেটেন্সি হতে পারে।
- ম্যানেজমেন্ট সার্ভারে এন্ট্রিগুলি অনেক বেশি সময় ধরে ক্যাশে করা হয়, তাই আমরা যদি খুব কম সময়ের মধ্যে রাইট ও রিড পারফর্ম করি, তাহলে API প্রক্সিতে লেটেস্ট ডেটা সঙ্গে সঙ্গে দেখতে নাও পেতে পারি।
- রানটাইমে নেটওয়ার্ক হপ বাড়ায়।
নিচে দেওয়া কোডের নমুনাতে, KeyValueMap থেকে তথ্য রিট্রিভ করার জন্য কাস্টম জাভাস্ক্রিপ্ট কোডের মাধ্যমে ম্যানেজমেন্ট API কল করা হয়:
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
ম্যানেজমেন্ট সার্ভার উপলভ্য না থাকলে, ম্যানেজমেন্ট API কল ইনভোক করা JavaScript কোড কাজ করে না। এর ফলে API অনুরোধ কাজ করে না।
প্রভাব
- রানটাইম চলাকালীন ম্যানেজমেন্ট সার্ভারের উপর অতিরিক্ত নির্ভরতা তৈরি করে। ম্যানেজমেন্ট সার্ভারে কোনও সমস্যা হলে API কল প্রভাবিত হবে।
- ম্যানেজমেন্ট API-এর জন্য ব্যবহারকারীর ক্রেডেনশিয়াল লোকালি বা এনক্রিপ্টেড KVM-এর মতো কোনও সুরক্ষিত স্টোরে সেভ করতে হবে।
- নেটওয়ার্কের মাধ্যমে ম্যানেজমেন্ট পরিষেবা চালু করার ফলে পারফর্ম্যান্সের উপর প্রভাব।
- ম্যানেজমেন্ট সার্ভারে ক্যাশের মেয়াদ বেশি হওয়ার কারণে আপডেট করা ভ্যালু সঙ্গে সঙ্গে দেখতে নাও পেতে পারেন।
পেশাদার পদ্ধতি
রানটাইমে KeyValueMaps, API Products, 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>
- API প্রোডাক্ট, ডেভেলপার অ্যাপ, ডেভেলপার, কনজিউমার কী ইত্যাদি সম্পর্কে তথ্য অ্যাক্সেস করতে, API প্রক্সিতে, আপনি নিম্নলিখিতগুলির মধ্যে যেকোনও একটি করতে পারেন:
- আপনার API প্রক্সি ফ্লোতে VerifyAPIKey নীতি থাকলে, আপনি এই নীতি
অনুসারে ফ্লো ভেরিয়েবল পপুলেট করে তথ্য অ্যাক্সেস করতে পারবেন। এখানে নমুনা কোড দেওয়া হল যা দেখায় যে
JavaScript ব্যবহার করে কীভাবে কোনও ডেভেলপার অ্যাপের নাম ও created_by সংক্রান্ত তথ্য পাওয়া যায়:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- আপনার API Proxy ফ্লোতে VerifyAPIKey নীতি না থাকলে, আপনি Access Entity ও Extract Variables
নীতি ব্যবহার করে API প্রোডাক্ট, ডেভেলপার অ্যাপ ইত্যাদির
প্রোফাইল অ্যাক্সেস করতে পারবেন:
- 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-এর প্রোফাইল রিট্রিভ করুন:
- আপনার API প্রক্সি ফ্লোতে VerifyAPIKey নীতি থাকলে, আপনি এই নীতি
অনুসারে ফ্লো ভেরিয়েবল পপুলেট করে তথ্য অ্যাক্সেস করতে পারবেন। এখানে নমুনা কোড দেওয়া হল যা দেখায় যে
JavaScript ব্যবহার করে কীভাবে কোনও ডেভেলপার অ্যাপের নাম ও created_by সংক্রান্ত তথ্য পাওয়া যায়: