আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
Apigee Edge-এর সাথে কাজ করা একজন ডেভেলপার হিসেবে, আপনার প্রাথমিক ডেভেলপমেন্ট অ্যাক্টিভিটি হল API প্রক্সি কনফিগার করা যা API বা ব্যাকএন্ড পরিষেবার জন্য প্রক্সি হিসেবে কাজ করে। API প্রক্সি তৈরি করার সময় আপনার কাছে উপলভ্য সব কনফিগারেশন এলিমেন্টের রেফারেন্স এই ডকুমেন্টে দেওয়া আছে।
আপনি যদি API প্রক্সি কীভাবে তৈরি করতে হয় তা শিখছেন, তাহলে আপনাকে এই বিষয় দিয়ে শুরু করার সাজেশন দেওয়া হয় একটি সাধারণ API প্রক্সি তৈরি করুন।
প্রক্সি কনফিগারেশন এডিট করার সবচেয়ে সাধারণ উপায়গুলি হল:
- Edge UI-এর মধ্যে XML এডিটর ব্যবহার করা
- প্রক্সি কনফিগারেশনের লোকাল ডেভেলপমেন্ট নিবন্ধে যেভাবে বর্ণনা করা হয়েছে সেইভাবে কনফিগারেশন ডাউনলোড করে লোকালি এডিট করুন।
প্রক্সি কনফিগারেশনের লোকাল ডেভেলপমেন্ট
আপনি নিজের প্রক্সি কনফিগারেশন ডাউনলোড করতে পারবেন যাতে আপনি লোকাল মেশিনে সেগুলি এডিট করতে পারেন। আপনার কাজ হয়ে গেলে, Edge-এ ফলাফল আপলোড করুন। এই পদ্ধতিতে আপনি সোর্স কন্ট্রোল, ভার্সনিং ও অন্যান্য শেয়ার করা ওয়ার্কফ্লোতে প্রক্সি কনফিগারেশন ইন্টিগ্রেট করতে পারবেন। এছাড়াও, লোকালি প্রক্সি কনফিগারেশন নিয়ে কাজ করার মাধ্যমে, আপনি নিজের XML এডিটর ও যাচাইকরণ টুল ব্যবহার করতে পারবেন।
এই বিভাগে, কীভাবে UI ব্যবহার করে আগে থেকে থাকা প্রক্সি কনফিগারেশন ডাউনলোড করতে, এটি এডিট করতে
এবং তারপর এটি Edge-এ আবার আপলোড করে ডেপ্লয় করতে হয় তা বর্ণনা করা হয়েছে। এছাড়াও, আপনি
apigeetool
ব্যবহার করে নতুন প্রক্সি কনফিগারেশন ডাউনলোড ও ডেপ্লয় করতে পারেন (এর জন্য যথাক্রমে fetchproxy ও
deployproxy কমান্ড ব্যবহার করুন)।
UI ব্যবহার করে লোকালি প্রক্সি কনফিগারেশন এডিট করতে:
- Edge UI-তে বর্তমান প্রক্সি কনফিগারেশন ডাউনলোড করুন। (API প্রক্সি ভিউতে, প্রোজেক্ট > রিভিশন ডাউনলোড করুন বিকল্প বেছে নিন।)
- আপনার লোকাল মেশিনে, একটি নতুন ডিরেক্টরি তৈরি করুন এবং ডাউনলোড করা ZIP ফাইলটি
সেখানে এক্সট্র্যাক্ট করুন।
জিপ ফাইলটি বড় করতে, আপনি
unzip-এর মতো ইউটিলিটি ব্যবহার করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:mkdir myappdir
unzip ./my-app_app_rev3_2019_04_20.zip -d myappdirZIP ফাইলের এক্সপ্যান্ড করা কন্টেন্ট API প্রক্সি স্ট্রাকচারে বর্ণিত স্ট্রাকচারের মতো হতে হবে।
- প্রয়োজন অনুযায়ী সোর্স ফাইল এডিট করুন। প্রক্সি কনফিগারেশনে সোর্স ফাইলের বিবরণ পেতে
API প্রক্সির কনফিগারেশন ফাইল ও
ডিরেক্টরি স্ট্রাকচার দেখুন।
যেমন, আপনার API প্রক্সিতে স্বাস্থ্য সংক্রান্ত মনিটরিং চালু করতে,
/apiproxy/targets/ডিরেক্টরিতে TargetEndpoint কনফিগারেশন ফাইল এডিট করুন। এই ডিরেক্টরির ডিফল্ট ফাইল হলdefault.xml, যদিও আপনি শর্তসাপেক্ষ টার্গেট ব্যবহার করলে, আলাদা আলাদা নামের ফাইল থাকতে পারে।এই ক্ষেত্রে, TargetEndpoint কনফিগারেশন ফাইল ও এর ডিরেক্টরি না থাকলে, সেগুলি তৈরি করুন।
- প্রক্সি কনফিগারেশন ফাইল এডিট করা হয়ে গেলে, আপনার করা পরিবর্তন সেভ করতে ভুলবেন না।
- ZIP ফাইল এক্সপ্যান্ড করার সময় আপনি যে নতুন ডিরেক্টরি তৈরি করেছেন সেটি পরিবর্তন করুন (এক্সপ্যান্ড করা কনফিগারেশন ফাইলের
রুট)।
যেমন, আপনি যদি
/myappdirডিরেক্টরিতে ফাইলগুলি এক্সপ্যান্ড করে থাকেন, তাহলে সেই ডিরেক্টরিতে পরিবর্তন করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:cd myappdir
প্রক্সি কনফিগারেশন ফাইল আবার আর্কাইভ করার আগে আপনাকে এই ডিরেক্টরিতে পরিবর্তন করতে হবে কারণ আপনি চান না যে
/myappdirডিরেক্টরি ZIP ফাইলে অন্তর্ভুক্ত করা হোক। ZIP ফাইলের টপ-লেভেল ডিরেক্টরি/apiproxyহতে হবে। - নতুন বা পরিবর্তিত ফাইল সহ প্রক্সি কনফিগারেশন ফাইল আবার আর্কাইভ করুন। আপনি
zip-এর মতো ইউটিলিটি ব্যবহার করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:zip my-new-proxy.zip -r .
ZIP ফাইলের সবচেয়ে উপরের লেভেলের ডিরেক্টরি
/apiproxyহতে হবে।ZIP ফাইলের নামের জন্য কোনও বিশেষ প্রয়োজনীয়তা নেই। যেমন, আপনাকে সংশোধনের নম্বর বাড়াতে বা ফাইলের নামে তারিখ উল্লেখ করতে হবে না, তবে এটি করলে ডিবাগিং বা সোর্স কন্ট্রোলের ক্ষেত্রে সুবিধা হতে পারে।
আপনি এটি আপলোড করলে, Edge আপনার জন্য নতুন প্রক্সি কনফিগারেশনের রিভিশন নম্বর বাড়িয়ে দেয়। এটি।
- Edge UI ব্যবহার করে নতুন প্রক্সি কনফিগারেশন আপলোড করুন। (API প্রক্সি
ভিউতে, প্রোজেক্ট > নতুন রিভিশন আপলোড করুন বিকল্প বেছে নিন।)
আপনি যদি Bundle is invalid. Empty bundle.-এর মতো কোনও সমস্যা দেখতে পান, তাহলে নিশ্চিত করুন যে আপনার ZIP ফাইলের টপ-লেভেল ডিরেক্টরি হল
/apiproxy। যদি না থাকে, তাহলে এক্সপ্যান্ড করা ডিরেক্টরির রুট থেকে আপনার প্রক্সি কনফিগারেশন ফাইল আবার আর্কাইভ করুন।আপনার নতুন প্রক্সি কনফিগারেশন আপলোড করার পরে, Edge রিভিশন নম্বর বাড়িয়ে দেয় এবং রিভিশন সারসংক্ষেপ ভিউতে এটি দেখায়।
আপনি UI-এর মাধ্যমে আপলোড করার পরে Edge আপনার জন্য নতুন রিভিশন ডেপ্লয় করে না।
- আপনার নতুন রিভিশন ডেপ্লয় করুন।
আরও তথ্যের জন্য, Apigee কমিউনিটিতে টিউটোরিয়াল: UI ও ম্যানেজমেন্ট API ব্যবহার করে কীভাবে প্রক্সি ডাউনলোড করবেন দেখুন।
API প্রক্সি স্ট্রাকচার
API প্রক্সিতে নিম্নলিখিত কনফিগারেশন থাকে:
| বেস কনফিগারেশন | API প্রক্সির জন্য প্রাথমিক কনফিগারেশন সেটিংস। বেস কনফিগারেশন দেখুন। |
| ProxyEndpoint কনফিগারেশন | ইনবাউন্ড HTTP কানেকশনের সেটিংস (অনুরোধকারী অ্যাপ থেকে Apigee Edge-এ), অনুরোধ ও রেসপন্স ফ্লো এবং নীতি অ্যাটাচমেন্ট। ProxyEndpoint দেখুন। |
| TargetEndpoint কনফিগারেশন | আউটবাউন্ড HTTP কানেকশনের সেটিংস (Apigee Edge থেকে ব্যাকএন্ড পরিষেবা), অনুরোধ ও উত্তর সংক্রান্ত ফ্লো এবং নীতি অ্যাটাচমেন্ট। TargetEndpoint দেখুন। |
| ফ্লো | ProxyEndpoint এবং TargetEndpoint অনুরোধ ও উত্তর পাইপলাইন, যার সাথে নীতি সংযুক্ত করা যেতে পারে। ফ্লো দেখুন। |
| নীতি | Apigee Edge নীতি স্কিমার সাথে মানানসই XML-ফর্ম্যাট করা কনফিগারেশন ফাইল। নীতি দেখুন। |
| রিসোর্স | কাস্টম লজিক এক্সিকিউট করার জন্য নীতি দ্বারা রেফারেন্স করা স্ক্রিপ্ট, JAR ফাইল এবং XSLT ফাইল। রিসোর্স দেখুন। |
API প্রক্সি ডিরেক্টরি স্ট্রাকচার ও কন্টেন্ট
উপরের টেবিলে থাকা কম্পোনেন্টগুলি নিম্নলিখিত ডিরেক্টরি স্ট্রাকচারে কনফিগারেশন ফাইল দ্বারা সংজ্ঞায়িত করা হয়:

কনফিগারেশন ফাইল ও ডিরেক্টরি API প্রক্সির স্ট্রাকচার
এই বিভাগে API প্রক্সির কনফিগারেশন ফাইল ও ডিরেক্টরি স্ট্রাকচার ব্যাখ্যা করা হয়েছে।
বেস কনফিগারেশন
/apiproxy/weatherapi.xml
API প্রক্সির বেস কনফিগারেশন, যা API প্রক্সির নাম নির্ধারণ করে। নামটি সংস্থার মধ্যে অনন্য হতে হবে।
কনফিগারেশনের নমুনা:
<APIProxy name="weatherapi"> </APIProxy>
বেস কনফিগারেশন এলিমেন্ট
| নাম | বিবরণ | ডিফল্ট | প্রয়োজনীয়? |
|---|---|---|---|
APIProxy |
|||
name |
API প্রক্সির নাম, যা কোনও সংস্থার মধ্যে অনন্য হতে হবে। নামে ব্যবহার করার অনুমতি আছে এমন অক্ষরগুলি
নিম্নলিখিত অক্ষরগুলির মধ্যে সীমাবদ্ধ:
A-Za-z0-9_- |
প্রযোজ্য নয় | হ্যাঁ |
revision |
API প্রক্সি কনফিগারেশনের রিভিশন নম্বর। আপনাকে স্পষ্টভাবে রিভিশন নম্বর সেট করতে হবে না, কারণ Apigee Edge অটোমেটিক API প্রক্সির বর্তমান রিভিশন ট্র্যাক করে। | প্রযোজ্য নয় | না |
ConfigurationVersion |
API প্রক্সি কনফিগারেশন স্কিমার সেই ভার্সন যার সাথে এই API প্রক্সি মানানসই। বর্তমানে শুধুমাত্র majorVersion 4 এবং minorVersion 0 ভ্যালু কাজ করে। API প্রক্সি ফর্ম্যাটের বিবর্তন চালু করতে ভবিষ্যতে এই সেটিং ব্যবহার করা হতে পারে। | ৪.০ | না |
Description |
API প্রক্সি সম্পর্কে টেক্সটে লেখা বিবরণ। প্রদান করা হলে, Edge ম্যানেজমেন্ট UI-তে বিবরণটি দেখানো হবে। | প্রযোজ্য নয় | না |
DisplayName |
API প্রক্সি কনফিগারেশনের name অ্যাট্রিবিউট থেকে আলাদা হতে পারে এমন
ব্যবহারকারী-বান্ধব নাম। |
প্রযোজ্য নয় | না |
Policies |
এই API প্রক্সির /policies ডিরেক্টরিতে নীতির তালিকা। আপনি
সাধারণত Edge ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি করলে তবেই এই এলিমেন্ট দেখতে পাবেন।
এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সির কন্টেন্ট সম্পর্কে
দৃশ্যমানতা প্রদান করার জন্য ডিজাইন করা হয়েছে। |
প্রযোজ্য নয় | না |
ProxyEndpoints |
এই API প্রক্সির /proxies ডিরেক্টরিতে ProxyEndpoints-এর একটি তালিকা। আপনি
সাধারণত তখনই এই এলিমেন্ট দেখতে পাবেন যখন Edge
ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি করা হয়। এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সি কন্টেন্ট
সম্পর্কে দৃশ্যমানতা প্রদান করার জন্য ডিজাইন করা হয়েছে। |
প্রযোজ্য নয় | না |
Resources |
এই API প্রক্সির /resources
ডিরেক্টরিতে রিসোর্সের (JavaScript, Python, Java, XSLT) একটি তালিকা। আপনি সাধারণত এই এলিমেন্টটি তখনই দেখতে পাবেন যখন API প্রক্সি Edge ম্যানেজমেন্ট UI ব্যবহার করে
তৈরি করা হয়। এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সি কন্টেন্টকে
দৃশ্যমান করার জন্য ডিজাইন করা হয়েছে। |
প্রযোজ্য নয় | না |
Spec |
API প্রক্সির সাথে যুক্ত OpenAPI স্পেসিফিকেশন শনাক্ত করে। ভ্যালু
স্পেসিফিকেশন স্টোরে কোনও URL বা পাথে সেট করা আছে। মনে রাখবেন: স্পেসিফিকেশন স্টোর শুধুমাত্র New Edge এক্সপিরিয়েন্সে উপলভ্য। স্পেসিফিকেশন স্টোর সম্পর্কে আরও জানতে, স্পেসিফিকেশন ম্যানেজ ও শেয়ার করা দেখুন। |
প্রযোজ্য নয় | না |
TargetServers |
এই API প্রক্সির যেকোনও TargetEndpoints-এ উল্লেখ করা TargetServers-এর তালিকা। আপনি সাধারণত Edge ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি করলে তবেই এই এলিমেন্ট দেখতে পাবেন। এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সির কন্টেন্ট সম্পর্কে দৃশ্যমানতা প্রদান করার জন্য ডিজাইন করা হয়েছে। | প্রযোজ্য নয় | না |
TargetEndpoints |
এই API প্রক্সি /targets ডিরেক্টরিতে TargetEndpoints-এর তালিকা। আপনি
সাধারণত তখনই এই এলিমেন্ট দেখতে পাবেন যখন Edge
ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি করা হয়। এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সি কন্টেন্ট
সম্পর্কে দৃশ্যমানতা প্রদান করার জন্য ডিজাইন করা হয়েছে। |
প্রযোজ্য নয় | না |
ProxyEndpoint
নিচের ছবিতে অনুরোধ/উত্তর সংক্রান্ত ফ্লো দেখানো হয়েছে:

/apiproxy/proxies/default.xml
ProxyEndpoint কনফিগারেশন API প্রক্সির ইনবাউন্ড (ক্লায়েন্ট-ফেসিং) ইন্টারফেসকে সংজ্ঞায়িত করে। আপনি ProxyEndpoint কনফিগার করার সময়, এমন একটি নেটওয়ার্ক কনফিগারেশন সেট-আপ করছেন যা ক্লায়েন্ট অ্যাপ্লিকেশন ('অ্যাপ') কীভাবে প্রক্সি করা API ইনভোক করবে তা নির্ধারণ করে।
নিম্নলিখিত নমুনা ProxyEndpoint কনফিগারেশনটি
/apiproxy/proxies-এর অধীনে সেভ করা হবে:
<ProxyEndpoint name="default">
<PreFlow/>
<Flows/>
<PostFlow/>
<HTTPProxyConnection>
<BasePath>/weather</BasePath>
<VirtualHost>default</VirtualHost>
</HTTPProxyConnection>
<FaultRules/>
<DefaultFaultRule/>
<RouteRule name="default">
<TargetEndpoint>default</TargetEndpoint>
</RouteRule>
</ProxyEndpoint>একটি সাধারণ ProxyEndpoint-এ প্রয়োজনীয় কনফিগারেশন এলিমেন্ট হল:
ProxyEndpoint কনফিগারেশন এলিমেন্ট
| নাম | বিবরণ | ডিফল্ট | প্রয়োজনীয়? |
|---|---|---|---|
ProxyEndpoint |
|||
name |
ProxyEndpoint-এর নাম। একাধিক ProxyEndpoints সংজ্ঞায়িত করা হলে, API প্রক্সি কনফিগারেশনের মধ্যে অনন্য হতে হবে।
(বিরল ক্ষেত্রে) নামে আপনি যেসব অক্ষর ব্যবহার করতে পারবেন
সেগুলি নিম্নলিখিত অক্ষরগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9._\-$ %। |
প্রযোজ্য নয় | হ্যাঁ |
PreFlow |
অনুরোধ বা উত্তরের PreFlow ফ্লোতে নীতি নির্ধারণ করে। | প্রযোজ্য নয় | হ্যাঁ |
Flows |
অনুরোধ বা উত্তরের কন্ডিশনাল ফ্লোতে নীতি নির্ধারণ করে।
|
প্রযোজ্য নয় | হ্যাঁ |
PostFlow |
অনুরোধ বা উত্তরের PostFlow ফ্লোতে নীতি নির্ধারণ করে।
|
প্রযোজ্য নয় | হ্যাঁ |
HTTPProxyConnection |
API প্রক্সির সাথে যুক্ত নেটওয়ার্ক অ্যাড্রেস ও URI পাথ নির্ধারণ করে | ||
BasePath |
একটি প্রয়োজনীয় স্ট্রিং যা Apigee Edge-এর ব্যবহার করা URI পাথকে অনন্যভাবে শনাক্ত করে যাতে আগত মেসেজকে সঠিক API প্রক্সিতে রাউট করা যায়। BasePath হল একটি URI ফ্র্যাগমেন্ট (যেমন বেস পাথে ওয়াইল্ডকার্ড ব্যবহার করা আপনি API প্রক্সি বেস পাথে এক বা একাধিক "*" ওয়াইল্ডকার্ড ব্যবহার করতে পারবেন। যেমন, গুরুত্বপূর্ণ: Apigee-তে বেস পাথের প্রথম এলিমেন্ট হিসেবে ওয়াইল্ডকার্ড "*" ব্যবহার করা যায় না।
যেমন, এটি কাজ করে না: |
/ | হ্যাঁ |
VirtualHost |
কোনও এনভায়রনমেন্টের জন্য নির্দিষ্ট বেস URL-এর সাথে API প্রক্সি অ্যাসোসিয়েট করে। VirtualHost হল একটি নামযুক্ত কনফিগারেশন যা কোনও এনভায়রনমেন্টের জন্য এক বা একাধিক URL নির্ধারণ করে। ProxyEndpoint-এর জন্য সংজ্ঞায়িত নামযুক্ত VirtualHosts, ডোমেন ও পোর্ট নির্ধারণ করে যেখানে API প্রক্সি এক্সপোজ করা হয় এবং এর সাথে সাথে, অ্যাপগুলি যে URL ব্যবহার করে API প্রক্সি ইনভোক করে সেটিও নির্ধারণ করে। সাধারণত, কোনও এনভায়রনমেন্টের জন্য দুটি নামযুক্ত VirtualHost সংজ্ঞায়িত করা হয়:
|
ডিফল্ট | না |
Properties |
ঐচ্ছিক HTTP কনফিগারেশন সেটিংসের একটি সেটকে
<ProxyEndpoint>-এর প্রপার্টি হিসেবে সংজ্ঞায়িত করা যেতে পারে। |
প্রযোজ্য নয় | না |
FaultRules |
ProxyEndpoint কীভাবে কোনও সমস্যার ব্যাপারে প্রতিক্রিয়া জানায় তা নির্ধারণ করে। একটি ফল্ট নিয়মে দুটি
আইটেম নির্দিষ্ট করা হয়:
সমস্যা সমাধান করা দেখুন। |
প্রযোজ্য নয় | না |
DefaultFaultRule |
অন্য কোনও ফল্ট নিয়মের মাধ্যমে স্পষ্টভাবে হ্যান্ডেল করা হয়নি এমন যেকোনও সমস্যা (সিস্টেম, ট্রান্সপোর্ট, মেসেজিং বা নীতি) হ্যান্ডেল করে। সমস্যা সমাধান করা দেখুন। |
প্রযোজ্য নয় | না |
RouteRule |
ProxyEndpoint রিকোয়েস্ট পাইপলাইন দ্বারা প্রসেস করার পরে ইনবাউন্ড রিকোয়েস্ট মেসেজের গন্তব্য নির্ধারণ করে। সাধারণত, RouteRule একটি নামযুক্ত TargetEndpoint কনফিগারেশনের দিকে নির্দেশ করে, তবে এটি সরাসরি কোনও URL-এর দিকেও নির্দেশ করতে পারে। | ||
Name |
প্রয়োজনীয় অ্যাট্রিবিউট, যা RouteRule-এর জন্য একটি নাম প্রদান করে। নামে ব্যবহার করার জন্য
আপনাকে যেসব অক্ষর ব্যবহার করার অনুমতি দেওয়া হয়েছে সেগুলি নিম্নলিখিত অক্ষরগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9._\-$ %। যেমন, Cat2 %_ হল একটি আইনি নাম। |
প্রযোজ্য নয় | হ্যাঁ |
Condition |
রানটাইমে ডায়নামিক রাউটিংয়ের জন্য ব্যবহৃত ঐচ্ছিক কন্ডিশনাল স্টেটমেন্ট। কন্ডিশনাল ব্যাকএন্ড ভার্সনিংয়ের ক্ষেত্রে কন্টেন্ট-ভিত্তিক রাউটিং চালু করার মতো কাজে RouteRules সহায়ক। | প্রযোজ্য নয় | না |
TargetEndpoint |
নামযুক্ত TargetEndpoint কনফিগারেশন শনাক্ত করে এমন একটি ঐচ্ছিক স্ট্রিং। নামযুক্ত
TargetEndpoint হল একই API প্রক্সির মধ্যে
TargetEndpoint-এর নাম দিয়ে, আপনি ইঙ্গিত করেন যে ProxyEndpoint অনুরোধ পাইপলাইন দ্বারা প্রসেস করার পরে অনুরোধ মেসেজ কোথায় ফরওয়ার্ড করা উচিত। মনে রাখবেন, এটি একটি ঐচ্ছিক সেটিং। ProxyEndpoint সরাসরি কোনও URL কল করতে পারে। যেমন, কোনও JavaScript বা Java রিসোর্স, HTTP ক্লায়েন্ট হিসেবে কাজ করে, কোনও TargetEndpoint-এর প্রাথমিক কাজ করতে পারে, যা হল ব্যাকএন্ড পরিষেবায় অনুরোধ ফরওয়ার্ড করা। |
প্রযোজ্য নয় | না |
| ইউআরএল | ProxyEndpoint-এর মাধ্যমে কল করা একটি আউটবাউন্ড নেটওয়ার্ক অ্যাড্রেসকে সংজ্ঞায়িত করে এমন একটি ঐচ্ছিক স্ট্রিং, যা
/targets-এর অধীনে সেভ করা থাকতে পারে এমন যেকোনও TargetEndpoint কনফিগারেশনকে বাইপাস করে
|
প্রযোজ্য নয় | না |
কীভাবে RouteRules কনফিগার করতে হয়
নামযুক্ত TargetEndpoint বলতে /apiproxy/targets-এর অধীনে থাকা কনফিগারেশন ফাইলকে বোঝায়
যেখানে ProxyEndpoint-এর মাধ্যমে প্রসেস করার পরে RouteRule একটি অনুরোধ ফরওয়ার্ড করে।
যেমন, নিম্নলিখিত RouteRule কনফিগারেশন
/apiproxy/targets/myTarget.xml-এর কথা উল্লেখ করে:
<RouteRule name="default"> <TargetEndpoint>myTarget</TargetEndpoint> </RouteRule>
সরাসরি URL ইনভোকেশন
এছাড়াও, ProxyEndpoint সরাসরি কোনও ব্যাকএন্ড পরিষেবা ইনভোক করতে পারে। সরাসরি URL ইনভোকেশন /apiproxy/targets-এর অধীনে যেকোনও
নামযুক্ত TargetEndpoints কনফিগারেশন বাইপাস করে। এই কারণে,
TargetEndpoint হল একটি ঐচ্ছিক API প্রক্সি কনফিগারেশন, যদিও, বাস্তবে, ProxyEndpoint থেকে সরাসরি ইনভোকেশন
সাজেস্ট করা হয় না।
যেমন, নিম্নলিখিত RouteRule
http://api.mycompany.com/v2-এ একটি HTTP কল করে।
<RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
কন্ডিশনাল রুট
রানটাইমে ডায়নামিক রাউটিংয়ের জন্য RouteRules চেইন করা যেতে পারে। ইনবাউন্ড অনুরোধ নামযুক্ত TargetEndpoint কনফিগারেশনে, সরাসরি URL-এ বা দু'টির কোনও একটিতে রাউট করা যেতে পারে, HTTP হেডার, মেসেজ কন্টেন্ট, কোয়েরি প্যারামিটার বা প্রাসঙ্গিক তথ্যের উপর ভিত্তি করে, যেমন দিনের সময়, লোকেল ইত্যাদি।
কন্ডিশনাল RouteRules, Apigee Edge-এ অন্যান্য কন্ডিশনাল স্টেটমেন্টের মতো কাজ করে। কন্ডিশন রেফারেন্স ও ভেরিয়েবল রেফারেন্স দেখুন।
যেমন, নিম্নলিখিত RouteRule কম্বিনেশন প্রথমে ইনবাউন্ড অনুরোধ মূল্যায়ন করে
HTTP হেডারের ভ্যালু যাচাই করে। HTTP হেডারে routeTo-এর মান
TargetEndpoint1 হলে, অনুরোধটি
TargetEndpoint1 নামের TargetEndpoint-এ ফরওয়ার্ড করা হয়। তা না হলে, ইনবাউন্ড অনুরোধটি
http://api.mycompany.com/v2-এ ফরওয়ার্ড করা হয়।
<RouteRule name="MyRoute"> <Condition>request.header.routeTo = "TargetEndpoint1"</Condition> <TargetEndpoint>TargetEndpoint1</TargetEndpoint> </RouteRule> <RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
নাল রুট
যেসব ক্ষেত্রে অনুরোধ মেসেজ TargetEndpoint-এ ফরওয়ার্ড করার প্রয়োজন নেই, সেইসব পরিস্থিতিকে সাপোর্ট করার জন্য একটি নাল RouteRule সংজ্ঞায়িত করা যেতে পারে। প্রক্সি এন্ডপয়েন্ট যখন প্রয়োজনীয় সব প্রসেসিং করে, তখন এটি কাজে লাগে। যেমন, কোনও এক্সটার্নাল পরিষেবা কল করার জন্য JavaScript ব্যবহার করা অথবা API পরিষেবার কী/ভ্যালু স্টোর থেকে লুক-আপের মাধ্যমে ডেটা পাওয়া।
যেমন, নিম্নলিখিতটি একটি নাল রুটকে সংজ্ঞায়িত করে:
<RouteRule name="GoNowhere"/>
শর্তসাপেক্ষ নাল রুট কাজে লাগতে পারে। নিচের উদাহরণে, একটি নাল রুট কনফিগার করা হয়েছে যা
তখনই এক্সিকিউট হবে যখন HTTP হেডারে request.header.X-DoNothing
null ছাড়া অন্য কোনও ভ্যালু থাকবে।
<RouteRule name="DoNothingOnDemand"> <Condition>request.header.X-DoNothing != null</Condition> </RouteRule>
মনে রাখবেন, RouteRules চেইন করা যেতে পারে, তাই কন্ডিশনাল নাল রুট সাধারণত কন্ডিশনাল রাউটিং সাপোর্ট করার জন্য ডিজাইন করা RouteRules-এর একটি সেটের কম্পোনেন্ট হবে।
ক্যাশিংয়ের ক্ষেত্রে কন্ডিশনাল নাল রাউটের ব্যবহারিক প্রয়োগ করা যেতে পারে। ক্যাশে নীতি দ্বারা সেট করা ভেরিয়েবলের ভ্যালু ব্যবহার করে, আপনি কোনও এন্ট্রি ক্যাশে থেকে পরিবেশন করা হলে, নাল রুট এক্সিকিউট করার জন্য API প্রক্সি কনফিগার করতে পারবেন।
<RouteRule name="DoNothingUnlessTheCacheIsStale"> <Condition>lookupcache.LookupCache-1.cachehit is true</Condition> </RouteRule>
TargetEndpoint

ProxyEndpoint-এর আউটবাউন্ড সমতুল্য হল TargetEndpoint. TargetEndpoint একটি ব্যাকএন্ড পরিষেবা বা API-এর ক্লায়েন্ট হিসেবে কাজ করে -- এটি অনুরোধ পাঠায় এবং উত্তর পায়।
API প্রক্সির কোনও TargetEndpoints না থাকলেও চলে। সরাসরি URL-এ কল করার জন্য ProxyEndpoints কনফিগার করা যায়। কোনও TargetEndpoints না থাকা API প্রক্সিতে সাধারণত একটি ProxyEndpoint থাকে যা হয় সরাসরি কোনও ব্যাকএন্ড পরিষেবাকে কল করে অথবা Java বা JavaScript ব্যবহার করে কোনও পরিষেবাকে কল করার জন্য কনফিগার করা হয়।
TargetEndpoint কনফিগারেশন
/targets/default.xml
TargetEndpoint, Apigee Edge থেকে অন্য পরিষেবা বা সম্পদের আউটবাউন্ড কানেকশনকে সংজ্ঞায়িত করে।
এখানে TargetEndpoint কনফিগারেশনের একটি নমুনা দেওয়া হল:
<TargetEndpoint name="default">
<PreFlow/>
<Flows/>
<PostFlow/>
<HTTPTargetConnection>
<URL>http://mocktarget.apigee.net</URL>
<SSLInfo/>
</HTTPTargetConnection>
<FaultRules/>
<DefaultFaultRule/>
<ScriptTarget/>
<LocalTargetConnection/>
</TargetEndpoint>TargetEndpoint কনফিগারেশন এলিমেন্ট
TargetEndpoint নিম্নলিখিত যেকোনও একটি উপায়ে টার্গেটকে কল করতে পারে:
- HTTP(S) কলের জন্য HTTPTargetConnection
- লোকাল প্রক্সি-টু-প্রক্সির জন্য LocalTargetConnection চেনিং
- Edge-হোস্ট করা Node.js স্ক্রিপ্টে কল করার জন্য ScriptTarget
TargetEndpoint-এ এগুলির মধ্যে শুধুমাত্র একটি কনফিগার করুন।
| নাম | বিবরণ | ডিফল্ট | প্রয়োজনীয়? |
|---|---|---|---|
TargetEndpoint |
|||
name |
TargetEndpoint-এর নাম, যা API প্রক্সি
কনফিগারেশনের মধ্যে অনন্য হতে হবে। আউটবাউন্ড প্রসেসিংয়ের জন্য অনুরোধ ডাইরেক্ট করতে ProxyEndpoint RouteRule-এ
TargetEndPoint-এর নাম ব্যবহার করা হয়। নামে ব্যবহার করার জন্য অনুমোদিত অক্ষরগুলি
নিম্নলিখিত অক্ষরগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9._\-$ %. |
প্রযোজ্য নয় | হ্যাঁ |
PreFlow |
অনুরোধ বা উত্তরের PreFlow ফ্লোতে নীতি নির্ধারণ করে। | প্রযোজ্য নয় | হ্যাঁ |
Flows |
অনুরোধ বা উত্তরের কন্ডিশনাল ফ্লোতে নীতি নির্ধারণ করে।
|
প্রযোজ্য নয় | হ্যাঁ |
PostFlow |
অনুরোধ বা উত্তরের PostFlow ফ্লোতে নীতি নির্ধারণ করে।
|
প্রযোজ্য নয় | হ্যাঁ |
HTTPTargetConnection |
এর চাইল্ড এলিমেন্টের মাধ্যমে HTTP-এর মাধ্যমে ব্যাকএন্ড রিসোর্স অ্যাক্সেস করার বিষয়টি নির্দিষ্ট করে। আপনি HTTPTargetConnection ব্যবহার করলে, অন্য ধরনের টার্গেট কানেকশন কনফিগার করবেন না (ScriptTarget বা LocalTargetConnection)। |
||
URL |
TargetEndpoint যে ব্যাকএন্ড পরিষেবায় অনুরোধ মেসেজ ফরওয়ার্ড করে, তার নেটওয়ার্ক অ্যাড্রেস নির্ধারণ করে। | প্রযোজ্য নয় | না |
LoadBalancer |
নামযুক্ত এক বা একাধিক TargetServer কনফিগারেশনকে সংজ্ঞায়িত করে। নামযুক্ত TargetServer কনফিগারেশন, ২ বা তার বেশি এন্ডপয়েন্ট কনফিগারেশন কানেকশনকে লোড ব্যালেন্স করার জন্য ব্যবহার করা যেতে পারে। এছাড়াও, আপনি API প্রক্সি কনফিগারেশনকে নির্দিষ্ট ব্যাকএন্ড পরিষেবা এন্ডপয়েন্ট URL থেকে আলাদা করতে TargetServers ব্যবহার করতে পারেন। |
প্রযোজ্য নয় | না |
Properties |
ঐচ্ছিক HTTP কনফিগারেশন সেটিংসের একটি সেটকে
<TargetEndpoint>-এর প্রপার্টি হিসেবে সংজ্ঞায়িত করা যেতে পারে। |
প্রযোজ্য নয় | না |
SSLInfo |
বিকল্প হিসেবে, API প্রক্সি ও টার্গেট পরিষেবার মধ্যে TLS/SSL কানেকশন কন্ট্রোল করতে, TargetEndpoint-এ TLS/SSL সেটিংস নির্ধারণ করুন। TLS/SSL TargetEndpoint কনফিগারেশন দেখুন। | প্রযোজ্য নয় | না |
LocalTargetConnection |
এর চাইল্ড এলিমেন্টের মাধ্যমে, লোড ব্যালেন্সিং ও মেসেজ প্রসেসরের মতো নেটওয়ার্ক
বৈশিষ্ট্য বাইপাস করে, লোকালি অ্যাক্সেস করা যায় এমন রিসোর্স নির্দিষ্ট করে।
টার্গেট রিসোর্স নির্দিষ্ট করতে, APIProxy চাইল্ড এলিমেন্ট (ProxyEndpoint এলিমেন্ট সহ) অথবা Path চাইল্ড এলিমেন্ট যোগ করুন। আরও তথ্যের জন্য, API প্রক্সি একসাথে চেইন করা দেখুন। আপনি LocalTargetConnection ব্যবহার করলে, অন্য ধরনের টার্গেট কানেকশন কনফিগার করবেন না (HTTPTargetConnection বা ScriptTarget)। |
||
APIProxy |
অনুরোধের টার্গেট হিসেবে ব্যবহার করার জন্য API প্রক্সির নাম নির্দিষ্ট করে। লক্ষ্য প্রক্সি অবশ্যই অনুরোধ পাঠানো প্রক্সির মতো একই সংস্থা ও এনভায়রনমেন্টে থাকতে হবে। এটি হল Path এলিমেন্ট ব্যবহার করার বিকল্প। | প্রযোজ্য নয় | না |
ProxyEndpoint |
টার্গেট প্রক্সির ProxyEndpoint-এর নাম নির্দিষ্ট করতে APIProxy-এর সাথে ব্যবহার করা হয়। | প্রযোজ্য নয় | না |
Path |
অনুরোধের টার্গেট হিসেবে ব্যবহার করার জন্য API প্রক্সির এন্ডপয়েন্ট পাথ নির্দিষ্ট করে। লক্ষ্য প্রক্সি এবং অনুরোধ পাঠানো প্রক্সি একই সংস্থা ও এনভায়রনমেন্টে থাকতে হবে। এটি APIProxy ব্যবহারের বিকল্প। | প্রযোজ্য নয় | না |
FaultRules |
TargetEndpoint কীভাবে কোনও সমস্যার ব্যাপারে প্রতিক্রিয়া জানায় তা নির্ধারণ করে। একটি ফল্ট নিয়মে দুটি
আইটেম নির্দিষ্ট করা হয়:
সমস্যা সমাধান করা দেখুন। |
প্রযোজ্য নয় | না |
DefaultFaultRule |
অন্য FaultRule-এর মাধ্যমে স্পষ্টভাবে হ্যান্ডেল করা হয়নি এমন যেকোনও সমস্যা (সিস্টেম, ট্রান্সপোর্ট, মেসেজিং বা নীতি) হ্যান্ডেল করে। সমস্যা সমাধান করা দেখুন। |
প্রযোজ্য নয় | না |
ScriptTarget |
|||
ResourceURL |
এটি রিসোর্সের ধরন (নোড) এবং মূল Node.js স্ক্রিপ্টের নাম নির্ধারণ করে যা TargetEndpoint কার্যকারিতা প্রয়োগ করে।
আপনার API প্রক্সির রিসোর্স ফাইলের সাথে স্ক্রিপ্ট অন্তর্ভুক্ত করতে হবে। আগে থেকে থাকা API প্রক্সিতে Node.js যোগ করা দেখুন। আপনি ScriptTarget ব্যবহার করলে, অন্য ধরনের টার্গেট কানেকশন কনফিগার করবেন না (HTTPTargetConnection বা LocalTargetConnection)। |
প্রযোজ্য নয় | হ্যাঁ |
EnvironmentVariable |
বিকল্প হিসেবে, মূল Node.js স্ক্রিপ্টে এনভায়রনমেন্ট ভেরিয়েবল পাস করুন। |
প্রযোজ্য নয় | না |
Arguments |
বিকল্প হিসেবে, মূল Node.js স্ক্রিপ্টে আর্গুমেন্ট পাস করুন। |
প্রযোজ্য নয় | না |
TLS/SSL TargetEndpoint কনফিগারেশন
TargetEndpoints-কে প্রায়ই বিভিন্ন ধরনের ব্যাকএন্ড ইনফ্রাস্ট্রাকচারের সাথে HTTPS কানেকশন ম্যানেজ করতে হয়। এই কারণে, একাধিক TLS/SSL কনফিগারেশন সেটিংস কাজ করে।
TLS/SSL TargetEndpoint কনফিগারেশন এলিমেন্ট
| নাম | বিবরণ | ডিফল্ট | প্রয়োজনীয়? |
|---|---|---|---|
SSLInfo |
|||
Enabled |
এন্ডপয়েন্টের জন্য TLS/SSL চালু করা আছে কিনা তা দেখায়।
<URL> HTTPS প্রোটোকল নির্দিষ্ট করলে ডিফল্ট মান হল true,
এবং <URL> HTTP নির্দিষ্ট করলে false। |
<URL> HTTPS নির্দিষ্ট করলে true |
না |
TrustStore |
বিশ্বস্ত সার্ভার সার্টিফিকেট সহ কীস্টোর। | প্রযোজ্য নয় | না |
ClientAuthEnabled |
আউটবাউন্ড ক্লায়েন্ট যাচাইকরণ (২-ওয়ে TLS/SSL) চালু করে এমন একটি সেটিং | মিথ্যা | না |
KeyStore |
আউটবাউন্ড ক্লায়েন্ট যাচাইকরণের জন্য ব্যবহৃত প্রাইভেট কী সহ কীস্টোর | প্রযোজ্য নয় | হ্যাঁ (ClientAuthEnabled-এর মান true হলে) |
KeyAlias |
আউটবাউন্ড ক্লায়েন্ট যাচাইকরণের জন্য ব্যবহৃত ব্যক্তিগত কী-এর কী অ্যালিয়াস | প্রযোজ্য নয় | হ্যাঁ (ClientAuthEnabled-এর মান true হলে) |
Ciphers |
আউটবাউন্ড TLS/SSL-এর জন্য কাজ করে এমন সাইফার। কোনও সাইফার নির্দিষ্ট করা না থাকলে, JVM-এর জন্য উপলভ্য সব সাইফারকে অনুমতি দেওয়া হবে। সাইফার সীমাবদ্ধ করতে, কাজ করে এমন সাইফার তালিকাভুক্ত করে নিম্নলিখিত এলিমেন্ট যোগ করুন: <Ciphers> <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher> <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher> </Ciphers> |
প্রযোজ্য নয় | না |
Protocols |
আউটবাউন্ড TLS/SSL-এর জন্য কাজ করে এমন প্রোটোকল। কোনও প্রোটোকল নির্দিষ্ট করা না থাকলে, JVM-এর জন্য উপলভ্য সব প্রোটোকলকে অনুমতি দেওয়া হবে। প্রোটোকল সীমাবদ্ধ করতে, নিম্নলিখিত এলিমেন্ট যোগ করুন যা কাজ করে এমন প্রোটোকল তালিকাভুক্ত করে: <Protocols> <Protocol>TLSv1.1</Protocol> <Protocol>TLSv1.2</Protocol> </Protocols> |
প্রযোজ্য নয় | না |
CommonName |
উল্লেখ করা থাকলে, এমন একটি ভ্যালু যার মাধ্যমে টার্গেট সার্টিফিকেটের সাধারণ নাম যাচাই করা হয়। এই ভ্যালু শুধুমাত্র TargetEndpoint এবং TargetServer কনফিগারেশনের জন্য বৈধ। এটি VirtualHost কনফিগারেশনের জন্য বৈধ নয়। সাধারণত, টার্গেট সার্টিফিকেটের সাধারণ নামের সাথে উল্লেখ করা ভ্যালু হুবহু ম্যাচ করে।
যেমন, <CommonName>-এর ভ্যালু হিসেবে বিকল্প হিসেবে, Apigee যেমন, টার্গেট সার্টিফিকেটে <CommonName wildcardMatch="true">*.myhost.com</CommonName> |
প্রযোজ্য নয় | না |
আউটবাউন্ড ক্লায়েন্ট যাচাইকরণ চালু করা আছে এমন Sample TargetEndpoint
<TargetEndpoint name="default">
<HttpTargetConnection>
<URL>https://myservice.com</URL>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>true</ClientAuthEnabled>
<KeyStore>myKeystore</KeyStore>
<KeyAlias>myKey</KeyAlias>
<TrustStore>myTruststore</TrustStore>
</SSLInfo>
</HttpTargetConnection>
</TargetEndpoint>বিস্তারিত নির্দেশাবলীর জন্য, Edge থেকে ব্যাকএন্ডে (ক্লাউড ও প্রাইভেট ক্লাউড) TLS কনফিগার করা দেখুন।
TLS/SSL ভ্যালু ডায়নামিক সেট করতে ফ্লো ভেরিয়েবল ব্যবহার করা
এছাড়াও, আপনি রানটাইম সংক্রান্ত নমনীয় প্রয়োজনীয়তা পূরণের জন্য ডায়নামিক TLS/SSL বিবরণ সেট করতে পারেন। যেমন, আপনার প্রক্সি যদি দুটি সম্ভাব্য আলাদা টার্গেটের (একটি টেস্ট টার্গেট ও একটি প্রোডাকশন টার্গেট) সাথে কানেক্ট করে, তাহলে আপনার API প্রক্সি প্রোগ্রামমেটিক উপায়ে শনাক্ত করতে পারবে যে এটি কোন এনভায়রনমেন্টে কল করছে এবং উপযুক্ত কীস্টোর ও ট্রাস্টস্টোরের রেফারেন্স ডাইনামিক উপায়ে সেট করতে পারবে। নিম্নলিখিত Apigee কমিউনিটি নিবন্ধে এই পরিস্থিতি আরও বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে এবং এতে প্রয়োগযোগ্য API প্রক্সি উদাহরণ দেওয়া হয়েছে: ভেরিয়েবল রেফারেন্স ব্যবহার করে TargetEndpoint-এর জন্য ডায়নামিক SSLInfo।
TargetEndpoint কনফিগারেশনে কীভাবে <SSLInfo> ট্যাগ সেট করা হয় তার নিম্নলিখিত উদাহরণে, রানটাইমে ভ্যালু প্রদান করা যেতে পারে, যেমন, Java
কলআউট, JavaScript নীতি বা Assign Message নীতি। আপনি যে ভ্যালু সেট করতে চান, সেই ভ্যালু আছে এমন মেসেজ ভেরিয়েবল
ব্যবহার করুন।
শুধুমাত্র নিম্নলিখিত এলিমেন্টে ভেরিয়েবল ব্যবহার করা যায়।
<SSLInfo> <Enabled>{myvars.ssl.enabled}</Enabled> <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled> <KeyStore>{myvars.ssl.keystore}</KeyStore> <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias> <TrustStore>{myvars.ssl.trustStore}</TrustStore> </SSLInfo>
TLS/SSL ভ্যালু ডায়নামিক সেট করতে রেফারেন্স ব্যবহার করা
HTTPS ব্যবহার করে এমন TargetEndpoint কনফিগার করার সময়, আপনাকে সেইসব ক্ষেত্রে বিবেচনা করতে হবে যেখানে TLS/SSL সার্টিফিকেট এক্সপায়ার হয়ে যায় অথবা সিস্টেম কনফিগারেশনে পরিবর্তনের জন্য আপনাকে সার্টিফিকেট আপডেট করতে হয়। প্রাইভেট ক্লাউড ইনস্টলেশনের জন্য Edge-এ, স্ট্যাটিক ভ্যালু বা ফ্লো ভেরিয়েবল ব্যবহার করে TLS/SSL কনফিগার করার সময়, আপনাকে মেসেজ প্রসেসর রিস্টার্ট করতে হতে পারে।
আরও জানতে, TLS সার্টিফিকেট আপডেট করুন দেখুন।
তবে, আপনি চাইলে TargetEndpoint কনফিগার করে, তার পরিবর্তে কীস্টোর বা ট্রাস্টস্টোরের রেফারেন্স ব্যবহার করতে পারেন। রেফারেন্স ব্যবহার করার সুবিধা হল, মেসেজ প্রসেসর রিস্টার্ট না করেই TLS/SSL সার্টিফিকেট আপডেট করার জন্য আপনি রেফারেন্স আপডেট করে অন্য কোনও কীস্টোর বা ট্রাস্টস্টোর পয়েন্ট করতে পারেন।
যেমন, নিচে দেখানো TargetEndpoint-এ কীস্টোরের রেফারেন্স ব্যবহার করা হয়েছে:
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://keystoreref</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>keystoreref নামের রেফারেন্স তৈরি করতে, নিম্নলিখিত POST API কল ব্যবহার করুন:
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
<Refers>myTestKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:passwordরেফারেন্সে কীস্টোরের নাম ও ধরন উল্লেখ করা থাকে।
রেফারেন্স দেখতে, নিম্নলিখিত GET API কল ব্যবহার করুন:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:passwordপরে অন্য কোনও কীস্টোরকে রেফারেন্স করার জন্য, নিশ্চিত করুন যে অ্যালিয়াসের নাম একই আছে এবং তারপরে নিম্নলিখিত PUT কল ব্যবহার করুন:
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
<Refers>myNewKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:passwordটার্গেট লোড ব্যালেন্সিং সহ TargetEndpoint
তিনটি লোড ব্যালেন্সিং অ্যালগরিদম ব্যবহার করে একাধিক নামযুক্ত TargetServer জুড়ে লোড ব্যালেন্সিং করার জন্য TargetEndpoints কাজ করে।
বিস্তারিত নির্দেশাবলীর জন্য, ব্যাকএন্ড সার্ভার জুড়ে লোড ব্যালেন্সিংদেখুন।
নীতি
API প্রক্সির /policies ডিরেক্টরিতে API প্রক্সির ফ্লোতে অ্যাটাচ করার জন্য উপলভ্য
সব নীতি থাকে।
নীতি কনফিগারেশন এলিমেন্ট
| নাম | বিবরণ | ডিফল্ট | প্রয়োজনীয়? |
|---|---|---|---|
Policy |
|||
name |
নীতির ইন্টার্নাল নাম। নামে ব্যবহার করা যায় এমন অক্ষরগুলি সীমাবদ্ধ
করা হয়েছে: বিকল্প হিসেবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে অন্য কোনও স্বাভাবিক ভাষার নাম দিয়ে
নীতি লেবেল করতে |
প্রযোজ্য নয় | হ্যাঁ |
enabled |
নীতি প্রয়োগ করতে নীতি "বন্ধ করতে" |
সত্য | না |
continueOnError |
নীতি কাজ না করলে সমস্যা দেখানোর জন্য
|
মিথ্যা | না |
async |
মনে রাখবেন: এই অ্যাট্রিবিউট নীতিকে অ্যাসিঙ্ক্রোনাসভাবে এক্সিকিউট করে না।
বেশিরভাগ ক্ষেত্রে, এটি
API প্রক্সিতে অ্যাসিঙ্ক্রোনাস আচরণ ব্যবহার করতে, জাভাস্ক্রিপ্ট অবজেক্ট মডেল দেখুন। |
মিথ্যা | না |
নীতি অ্যাটাচমেন্ট
নিচের ছবিতে API প্রক্সি ফ্লো এক্সিকিউশন সিকোয়েন্স দেখানো হয়েছে:

উপরে যেমন দেখানো হয়েছে:
ফ্লো-এর প্রসেসিং ধাপ হিসেবে নীতি অ্যাটাচ করা হয়। প্রসেসিং ধাপ হিসেবে এনফোর্স করা হবে এমন নীতিকে রেফার করতে নীতির নাম ব্যবহার করা হয়। নীতি অ্যাটাচমেন্টের ফর্ম্যাট হল নিম্নলিখিত:
<Step><Name>MyPolicy</Name></Step>
কোনও Flow-তে নীতিগুলি যেভাবে অ্যাটাচ করা হয় সেই ক্রম অনুযায়ী সেগুলি প্রয়োগ করা হয়। যেমন:
<Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step>
নীতি অ্যাটাচমেন্ট কনফিগারেশন এলিমেন্ট
| নাম | বিবরণ | ডিফল্ট | প্রয়োজনীয়? |
|---|---|---|---|
Step |
|||
Name |
এই ধাপের সংজ্ঞা দ্বারা প্রয়োগ করা হবে এমন নীতির নাম। | প্রযোজ্য নয় | হ্যাঁ |
Condition |
নীতি প্রয়োগ করা হবে কিনা তা নির্ধারণ করে এমন একটি শর্তসাপেক্ষ বিবৃতি। কোনও নীতির সাথে সংশ্লিষ্ট শর্ত থাকলে, শর্তমূলক বিবৃতি সত্য হলে তবেই নীতিটি কার্যকর হয়। | প্রযোজ্য নয় | না |
ফ্লো
ProxyEndpoint এবং TargetEndpoint, অনুরোধ ও উত্তর মেসেজ প্রসেস করার জন্য একটি পাইপলাইন নির্ধারণ করে। প্রসেসিং পাইপলাইনে একটি অনুরোধ ফ্লো ও একটি উত্তর ফ্লো থাকে। প্রতিটি অনুরোধ ফ্লো ও উত্তর ফ্লোকে প্রিফ্লো, এক বা একাধিক ঐচ্ছিক 'কন্ডিশনাল' বা 'নামযুক্ত' ফ্লো এবং পোস্টফ্লোতে ভাগ করা হয়।
- প্রিফ্লো: সবসময় এক্সিকিউট করে। কোনও কন্ডিশনাল ফ্লোয়ের আগে এক্সিকিউট হয়।
- PostFlow: সবসময় এক্সিকিউট হয়। কোনও কন্ডিশনাল ফ্লোয়ের পরে এক্সিকিউট হয়।
এছাড়াও, আপনি ProxyEndpoint-এ একটি PostClientFlow যোগ করতে পারেন, যা অনুরোধকারী ক্লায়েন্ট অ্যাপে
উত্তর রিটার্ন করার পরে এক্সিকিউট হয়। শুধুমাত্র MessageLogging নীতি এবং
Google Stackdriver Logging এক্সটেনশন এই ফ্লোতে অ্যাটাচ করা
যেতে পারে। PostClientFlow API প্রক্সি লেটেন্সি কমায় এবং লগিংয়ের জন্য তথ্য উপলভ্য করে তোলে যা
ক্লায়েন্টকে উত্তর ফেরত দেওয়ার আগে পর্যন্ত গণনা করা হয় না, যেমন
client.sent.start.timestamp এবং client.sent.end.timestamp। এই ফ্লোটি মূলত
উত্তর মেসেজের শুরু ও শেষ হওয়ার টাইমস্ট্যাম্পের মধ্যে সময়ের ব্যবধান পরিমাপ করার জন্য
ব্যবহার করা হয়।
কীভাবে করতে হয় সেই সম্পর্কিত একটি ছোট ভিডিও দেখুন
ভিডিও: PostClientFlow-তে মেসেজ লগ করার পদ্ধতি সম্পর্কে এই ছোট ভিডিওটি দেখুন।
মেসেজ লগিং নীতি সংযুক্ত PostClientFlow-এর একটি উদাহরণ এখানে দেওয়া হল।
...
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<PostClientFlow>
<Request/>
<Response>
<Step>
<Name>Message-Logging-1</Name>
</Step>
</Response>
</PostClientFlow>
...API প্রক্সি প্রসেসিং পাইপলাইন নিম্নলিখিত ক্রম অনুসারে ফ্লো এক্সিকিউট করে:
অনুরোধ পাইপলাইন:
- প্রক্সি অনুরোধের প্রিফ্লো
- প্রক্সি অনুরোধের কন্ডিশনাল ফ্লো (ঐচ্ছিক)
- প্রক্সি অনুরোধ পোস্টফ্লো
- টার্গেট অনুরোধ প্রিফ্লো
- টার্গেট অনুরোধের কন্ডিশনাল ফ্লো (ঐচ্ছিক)
- টার্গেট রিকোয়েস্ট পোস্টফ্লো
উত্তর দেওয়ার পাইপলাইন:
- টার্গেট রেসপন্স প্রিফ্লো
- টার্গেট উত্তর সম্পর্কিত কন্ডিশনাল ফ্লো (ঐচ্ছিক)
- টার্গেট উত্তর পোস্টফ্লো
- প্রক্সি রেসপন্স প্রিফ্লো
- প্রক্সি রেসপন্স কন্ডিশনাল ফ্লো (ঐচ্ছিক)
- প্রক্সি রেসপন্স পোস্টফ্লো
- PostClientFlow উত্তর (ঐচ্ছিক)
শুধুমাত্র নীতি অ্যাটাচমেন্ট সহ ফ্লোগুলিই ProxyEndpoint বা TargetEndpoint কনফিগারেশনে কনফিগার করতে হবে। PreFlow এবং PostFlow শুধুমাত্র ProxyEndpoint বা TargetEndpoint কনফিগারেশনে নির্দিষ্ট করতে হবে যখন PreFlow বা PostFlow প্রসেসিং চলাকালীন কোনও নীতি প্রয়োগ করার প্রয়োজন হয়।
কন্ডিশনাল ফ্লোয়ের বিপরীতে, প্রিফ্লো ও পোস্টফ্লো এলিমেন্টের ক্রম গুরুত্বপূর্ণ নয়--API প্রক্সি সবসময় পাইপলাইনের উপযুক্ত পয়েন্টে প্রতিটি এলিমেন্ট এক্সিকিউট করবে, এন্ডপয়েন্ট কনফিগারেশনে সেগুলি যেখানেই থাকুক না কেন।
কন্ডিশনাল ফ্লো
ProxyEndpoints এবং TargetEndpoints-এ সীমাহীন সংখ্যক কন্ডিশনাল ফ্লো (এছাড়াও, এগুলিকে 'নামযুক্ত ফ্লো' বলা হয়) কাজ করে।
API প্রক্সি, কন্ডিশনাল ফ্লোতে নির্দিষ্ট করা কন্ডিশনের জন্য API প্রক্সি টেস্ট করে এবং কন্ডিশন পূরণ হলে, কন্ডিশনাল ফ্লোতে প্রসেসিং ধাপগুলি API প্রক্সি দ্বারা এক্সিকিউট করা হয়। শর্ত পূরণ না হলে, কন্ডিশনাল ফ্লোতে প্রসেসিং ধাপগুলি এড়িয়ে যাওয়া হয়। API প্রক্সি সার্ভারে যেভাবে সংজ্ঞায়িত করা হয়েছে সেই ক্রম অনুযায়ী কন্ডিশনাল ফ্লো মূল্যায়ন করা হয় এবং প্রথম যেটির কন্ডিশন পূরণ হয় সেটি এক্সিকিউট করা হয়।
কন্ডিশনাল ফ্লো নির্ধারণ করার মাধ্যমে, আপনি API প্রক্সিতে প্রসেসিং ধাপ প্রয়োগ করার ক্ষমতা পান, যা এইসব বিষয়ের উপর ভিত্তি করে করা হয়:
- অনুরোধ করা URI
- HTTP ক্রিয়া (GET/PUT/POST/DELETE)
- কোয়েরি প্যারামিটার, হেডার ও ফর্ম প্যারামিটারের ভ্যালু
- আরও অনেক ধরনের শর্ত
যেমন, নিম্নলিখিত শর্তাধীন ফ্লোতে উল্লেখ করা হয়েছে যে এটি শুধুমাত্র তখনই এক্সিকিউট করা হবে যখন
অনুরোধ করা রিসোর্স পাথ /accesstoken হবে। ফ্লোতে অ্যাটাচ করা যেকোনও নীতি সহ
পাথ /accesstoken সহ যেকোনও ইনবাউন্ড অনুরোধ এই ফ্লোকে এক্সিকিউট করায়।
অনুরোধের পাথে প্রত্যয়
/accesstoken না থাকলে, ফ্লোটি এক্সিকিউট হয় না (যদিও অন্য কোনও কন্ডিশনাল ফ্লো
হতে পারে)।
<Flows>
<Flow name="TokenEndpoint">
<Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition>
<Request>
<Step>
<Name>GenerateAccessToken</Name>
</Step>
</Request>
</Flow>
</Flows>ফ্লো কনফিগারেশন এলিমেন্ট
| নাম | বিবরণ | ডিফল্ট | প্রয়োজনীয়? |
|---|---|---|---|
Flow |
ProxyEndpoint বা TargetEndpoint দ্বারা নির্ধারিত অনুরোধ বা উত্তর প্রসেসিং পাইপলাইন | ||
Name |
ফ্লো-এর অনন্য নাম। | প্রযোজ্য নয় | হ্যাঁ |
Condition |
একটি কন্ডিশনাল স্টেটমেন্ট যা এক বা একাধিক ভেরিয়েবল মূল্যায়ন করে সত্য বা মিথ্যা হিসেবে মূল্যায়ন করে। আগে থেকে সংজ্ঞায়িত PreFlow ও PostFlow ধরনের Flow ছাড়া অন্য সব Flow-কে এক্সিকিউট করার জন্য একটি কন্ডিশন সংজ্ঞায়িত করতে হবে। | প্রযোজ্য নয় | হ্যাঁ |
Request |
অনুরোধ মেসেজ প্রসেসিংয়ের সাথে যুক্ত পাইপলাইন | প্রযোজ্য নয় | না |
Response |
উত্তর মেসেজ প্রসেসিংয়ের সাথে যুক্ত পাইপলাইন | প্রযোজ্য নয় | না |
ধাপ প্রসেস করা
Apigee Edge কন্ডিশনাল ফ্লোয়ের ক্রমিক অর্ডারিং প্রয়োগ করে। কন্ডিশনাল ফ্লো
উপর থেকে নিচে এক্সিকিউট হয়। প্রথম কন্ডিশনাল ফ্লো যার কন্ডিশন
true হিসেবে মূল্যায়ন করা হয় সেটি এক্সিকিউট করা হয় এবং শুধুমাত্র একটি কন্ডিশনাল ফ্লো এক্সিকিউট করা হয়।
যেমন, নিম্নলিখিত Flow কনফিগারেশনে, পাথ সাফিক্স /first বা /second অন্তর্ভুক্ত না থাকা যেকোনও ইনবাউন্ড অনুরোধের কারণে ThirdFlow
এক্সিকিউট হবে, যা Return404 নামের নীতি প্রয়োগ করবে।
<Flows>
<Flow name="FirstFlow">
<Condition>proxy.pathsuffix MatchesPath "/first"</Condition>
<Request>
<Step><Name>FirstPolicy</Name></Step>
</Request>
</Flow>
<Flow name="SecondFlow">
<Condition>proxy.pathsuffix MatchesPath "/second"</Condition>
<Request>
<Step><Name>FirstPolicy</Name></Step>
<Step><Name>SecondPolicy</Name></Step>
</Request>
</Flow>
<Flow name="ThirdFlow">
<Request>
<Step><Name>Return404</Name></Step>
</Request>
</Flow>
</Flows>রিসোর্স
"রিসোর্স" (API প্রক্সিতে ব্যবহারের জন্য রিসোর্স ফাইল) হল স্ক্রিপ্ট, কোড এবং XSL ট্রান্সফর্মেশন যেগুলি নীতি ব্যবহার করে ফ্লোতে অ্যাটাচ করা যেতে পারে। ম্যানেজমেন্ট UI-তে API প্রক্সি এডিটরের "স্ক্রিপ্ট" বিভাগে এগুলি দেখা যায়।
কোন কোন রিসোর্স কাজ করে তা জানতে রিসোর্স ফাইল দেখুন।
API প্রক্সি, এনভায়রনমেন্ট বা প্রতিষ্ঠানে রিসোর্স সেভ করা যেতে পারে। প্রতিটি ক্ষেত্রেই, কোনও নীতিতে রিসোর্সকে নাম দিয়ে রেফার করা হয়। API পরিষেবা, API প্রক্সি থেকে এনভায়রনমেন্ট, তারপর অর্গানাইজেশন লেভেলে গিয়ে নাম সংক্রান্ত সমস্যার সমাধান করে।
সংস্থা লেভেলে স্টোর করা কোনও রিসোর্স যেকোনও এনভায়রনমেন্টে নীতি দ্বারা রেফারেন্স করা যেতে পারে। এনভায়রনমেন্ট লেভেলে সেভ করা কোনও রিসোর্স সেই এনভায়রনমেন্টের নীতি দ্বারা রেফারেন্স করা যেতে পারে। API প্রক্সি লেভেলে স্টোর করা রিসোর্স শুধুমাত্র সেই API প্রক্সির নীতি দ্বারা রেফার করা যেতে পারে।