আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
Apigee Edge-এর সাথে কাজ করা একজন ডেভেলপার হিসেবে, আপনার প্রাথমিক উন্নয়ন ক্রিয়াকলাপগুলির মধ্যে API প্রক্সিগুলি কনফিগার করা জড়িত যেগুলি API বা ব্যাকএন্ড পরিষেবাগুলির জন্য প্রক্সি হিসাবে কাজ করে৷ এই নথিটি API প্রক্সি তৈরি করার সময় আপনার কাছে উপলব্ধ সমস্ত কনফিগারেশন উপাদানগুলির একটি রেফারেন্স।
আপনি যদি এপিআই প্রক্সি তৈরি করতে শিখছেন, তাহলে সুপারিশ করা হয় যে আপনি একটি সাধারণ API প্রক্সি তৈরি করুন বিষয় দিয়ে শুরু করুন।
প্রক্সি কনফিগারেশন সম্পাদনা করার সবচেয়ে সাধারণ উপায় হল:
- এজ UI এর মধ্যে XML সম্পাদক ব্যবহার করা
- কনফিগারেশন ডাউনলোড করুন এবং স্থানীয়ভাবে সম্পাদনা করুন, যেমন প্রক্সি কনফিগারেশনের স্থানীয় বিকাশে বর্ণিত হয়েছে।
প্রক্সি কনফিগারেশনের স্থানীয় উন্নয়ন
আপনি আপনার প্রক্সি কনফিগারেশন ডাউনলোড করতে পারেন যাতে আপনি সেগুলি স্থানীয় মেশিনে সম্পাদনা করতে পারেন৷ আপনার হয়ে গেলে, আপনি ফলাফলগুলি এজ-এ আপলোড করুন৷ এই পদ্ধতির সাহায্যে আপনি প্রক্সি কনফিগারেশনগুলিকে আপনার সোর্স কন্ট্রোল, ভার্সনিং এবং অন্যান্য শেয়ার্ড ওয়ার্কফ্লোতে সংহত করতে পারবেন। উপরন্তু, স্থানীয়ভাবে একটি প্রক্সি কনফিগারেশনে কাজ করে, আপনি আপনার নিজস্ব XML সম্পাদক এবং বৈধতা সরঞ্জাম ব্যবহার করতে পারেন।
এই বিভাগটি বর্ণনা করে যে কীভাবে একটি বিদ্যমান প্রক্সি কনফিউরেশন ডাউনলোড করতে UI ব্যবহার করতে হয়, এটি সম্পাদনা করতে হয় এবং তারপর স্থাপনের জন্য এটিকে আবার এজ-এ আপলোড করতে হয়। আপনি একটি নতুন প্রক্সি কনফিগারেশন ডাউনলোড এবং স্থাপন করতে (যথাক্রমে fetchproxy
এবং deployproxy
কমান্ড ব্যবহার করে) apigeetool ব্যবহার করতে পারেন।
UI ব্যবহার করে স্থানীয়ভাবে একটি প্রক্সি কনফিগারেশন সম্পাদনা করতে:
- এজ UI এ বর্তমান প্রক্সি কনফিগারেশন ডাউনলোড করুন। (এপিআই প্রক্সি ভিউতে, প্রজেক্ট > রিভিশন ডাউনলোড করুন নির্বাচন করুন।)
- আপনার স্থানীয় মেশিনে, একটি নতুন ডিরেক্টরি তৈরি করুন এবং এতে ডাউনলোড করা জিপ ফাইলটি প্রসারিত করুন।
জিপ ফাইলটি প্রসারিত করতে, আপনি একটি ইউটিলিটি ব্যবহার করতে পারেন যেমন
unzip
, নিম্নলিখিত উদাহরণটি দেখায়:mkdir myappdir
unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir
ZIP ফাইলের প্রসারিত বিষয়বস্তু API প্রক্সি কাঠামোতে বর্ণিত কাঠামোর অনুরূপ হওয়া উচিত।
- প্রয়োজন অনুযায়ী উৎস ফাইল সম্পাদনা করুন. একটি প্রক্সি কনফিগারেশনে সোর্স ফাইলগুলির বর্ণনার জন্য, একটি API প্রক্সির কনফিগারেশন ফাইল এবং ডিরেক্টরি কাঠামো দেখুন।
উদাহরণস্বরূপ, আপনার API প্রক্সিতে স্বাস্থ্য পর্যবেক্ষণ সক্ষম করতে,
/apiproxy/targets/
ডিরেক্টরিতে TargetEndpoint কনফিগারেশন ফাইলটি সম্পাদনা করুন। এই ডিরেক্টরির ডিফল্ট ফাইলটি হলdefault.xml
, যদিও আপনি শর্তসাপেক্ষ টার্গেট ব্যবহার করলে বিভিন্ন নামের ফাইল থাকতে পারে।এই ক্ষেত্রে, যদি TargetEndpoint কনফিগারেশন ফাইল এবং এর ডিরেক্টরি বিদ্যমান না থাকে, সেগুলি তৈরি করুন।
- আপনি প্রক্সি কনফিগারেশন ফাইল সম্পাদনা শেষ করার পরে, আপনার পরিবর্তনগুলি সংরক্ষণ করতে ভুলবেন না।
- আপনি জিপ ফাইলগুলি প্রসারিত করার সময় যে নতুন ডিরেক্টরিটি তৈরি করেছিলেন তা পরিবর্তন করুন (প্রসারিত কনফিগারেশন ফাইলগুলির মূল)।
উদাহরণস্বরূপ, যদি আপনি ফাইলগুলিকে
/myappdir
ডিরেক্টরিতে প্রসারিত করেন, তাহলে সেই ডিরেক্টরিতে পরিবর্তন করুন, নিম্নলিখিত উদাহরণটি দেখায়:cd myappdir
আপনার প্রক্সি কনফিগারেশন ফাইলগুলি পুনরায় সংরক্ষণ করার আগে আপনার এই ডিরেক্টরিতে পরিবর্তন করা উচিত কারণ আপনি
/myappdir
ডিরেক্টরিটি ZIP ফাইলে অন্তর্ভুক্ত করতে চান না। ZIP ফাইলের শীর্ষ-স্তরের ডিরেক্টরি অবশ্যই/apiproxy
হতে হবে। - নতুন বা পরিবর্তিত ফাইল সহ প্রক্সি কনফিগারেশন ফাইলগুলি পুনরায় সংরক্ষণ করুন। আপনি একটি ইউটিলিটি ব্যবহার করতে পারেন যেমন
zip
, নিম্নলিখিত উদাহরণটি দেখায়:zip my-new-proxy.zip -r .
ZIP ফাইলের শীর্ষ-স্তরের ডিরেক্টরি অবশ্যই
/apiproxy
হতে হবে।জিপ ফাইলের নামের জন্য কোন বিশেষ প্রয়োজনীয়তা নেই। উদাহরণ স্বরূপ, আপনাকে রিভিশন নম্বর বাড়াতে হবে না বা ফাইলের নামে তারিখ উল্লেখ করতে হবে না, তবে এটি করা ডিবাগিং বা উৎস নিয়ন্ত্রণের জন্য উপযোগী হতে পারে।
আপনি যখন এটি আপলোড করেন তখন এজ আপনার জন্য নতুন প্রক্সি কনফিগারেশনের সংশোধন সংখ্যা বৃদ্ধি করে৷
- এজ UI ব্যবহার করে নতুন প্রক্সি কনফিগারেশন আপলোড করুন। ( এপিআই প্রক্সি ভিউতে, প্রজেক্ট > একটি নতুন রিভিশন আপলোড করুন নির্বাচন করুন।)
যদি আপনি একটি ত্রুটি পান যেমন Bundle is invalid. Empty bundle. , তারপর নিশ্চিত করুন যে আপনার ZIP ফাইলের শীর্ষ-স্তরের ডিরেক্টরিটি
/apiproxy
। যদি এটি না হয়, প্রসারিত ডিরেক্টরির মূল থেকে আপনার প্রক্সি কনফিগারেশন ফাইলগুলি পুনরায় সংরক্ষণ করুন৷আপনার নতুন প্রক্সি কনফিগারেশন আপলোড করার পরে, এজ রিভিশন নম্বর বৃদ্ধি করে এবং রিভিশন সারাংশ ভিউতে প্রদর্শন করে।
আপনি UI এর সাথে আপলোড করার পরে এজ আপনার জন্য নতুন সংশোধন স্থাপন করে না।
- আপনার নতুন সংশোধন স্থাপন করুন.
আরও তথ্যের জন্য টিউটোরিয়াল দেখুন: Apigee কমিউনিটিতে UI এবং ব্যবস্থাপনা API ব্যবহার করে কীভাবে একটি প্রক্সি ডাউনলোড করবেন ।
API প্রক্সি কাঠামো
একটি API প্রক্সি নিম্নলিখিত কনফিগারেশন নিয়ে গঠিত:
বেস কনফিগারেশন | একটি API প্রক্সির জন্য প্রাথমিক কনফিগারেশন সেটিংস৷ বেস কনফিগারেশন দেখুন। |
প্রক্সিএন্ডপয়েন্ট কনফিগারেশন | ইনবাউন্ড HTTP সংযোগের জন্য সেটিংস (অ্যাপগুলি থেকে অ্যাপিজি এজ পর্যন্ত অনুরোধ করা), অনুরোধ এবং প্রতিক্রিয়া প্রবাহ এবং নীতি সংযুক্তি। প্রক্সিএন্ডপয়েন্ট দেখুন। |
টার্গেটএন্ডপয়েন্ট কনফিগারেশন | আউটবাউন্ড HTTP সংযোগের জন্য সেটিংস (Apigee এজ থেকে ব্যাকএন্ড পরিষেবাতে), অনুরোধ এবং প্রতিক্রিয়া প্রবাহ, এবং নীতি সংযুক্তি। TargetEndpoint দেখুন। |
প্রবাহিত হয় | ProxyEndpoint এবং TargetEndpoint অনুরোধ এবং প্রতিক্রিয়া পাইপলাইন যার সাথে নীতিগুলি সংযুক্ত করা যেতে পারে৷ প্রবাহ দেখুন। |
নীতিমালা | XML-ফরম্যাট করা কনফিগারেশন ফাইল যা Apigee Edge নীতি স্কিমাগুলির সাথে সামঞ্জস্যপূর্ণ। নীতি দেখুন. |
সম্পদ | স্ক্রিপ্ট, JAR ফাইল, এবং XSLT ফাইলগুলি কাস্টম লজিক চালানোর জন্য নীতি দ্বারা উল্লেখ করা হয়েছে। সম্পদ দেখুন। |
API প্রক্সি ডিরেক্টরি গঠন এবং বিষয়বস্তু
উপরের টেবিলের উপাদানগুলি নিম্নলিখিত ডিরেক্টরি কাঠামোর কনফিগারেশন ফাইল দ্বারা সংজ্ঞায়িত করা হয়েছে:
একটি API প্রক্সির কনফিগারেশন ফাইল এবং ডিরেক্টরি কাঠামো
এই বিভাগটি একটি API প্রক্সির কনফিগারেশন ফাইল এবং ডিরেক্টরি গঠন ব্যাখ্যা করে।
বেস কনফিগারেশন
/apiproxy/weatherapi.xml
একটি API প্রক্সির জন্য বেস কনফিগারেশন, যা API প্রক্সির নাম সংজ্ঞায়িত করে। নাম অবশ্যই একটি প্রতিষ্ঠানের মধ্যে অনন্য হতে হবে।
নমুনা কনফিগারেশন:
<APIProxy name="weatherapi"> </APIProxy>
বেস কনফিগারেশন উপাদান
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
APIProxy | |||
name | API প্রক্সির নাম, যা একটি প্রতিষ্ঠানের মধ্যে অনন্য হতে হবে। আপনি নামের মধ্যে যে অক্ষরগুলি ব্যবহার করতে পারবেন সেগুলি নিম্নলিখিতগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9_- | N/A | হ্যাঁ |
revision | API প্রক্সি কনফিগারেশনের রিভিশন নম্বর। আপনাকে স্পষ্টভাবে রিভিশন নম্বর সেট করার দরকার নেই, যেহেতু Apigee Edge স্বয়ংক্রিয়ভাবে API প্রক্সির বর্তমান রিভিশন ট্র্যাক করে। | N/A | না |
ConfigurationVersion | API প্রক্সি কনফিগারেশন স্কিমার সংস্করণ যার সাথে এই API প্রক্সি মেনে চলে। বর্তমানে একমাত্র সমর্থিত মান হল major Version 4 এবং minorVersion 0৷ এই সেটিংটি ভবিষ্যতে API প্রক্সি ফর্ম্যাটের বিবর্তন সক্ষম করতে ব্যবহার করা হতে পারে৷ | 4.0 | না |
Description | API প্রক্সির একটি পাঠ্য বিবরণ। প্রদান করা হলে, বিবরণটি এজ ম্যানেজমেন্ট UI-তে প্রদর্শিত হবে। | N/A | না |
DisplayName | একটি ব্যবহারকারী-বান্ধব নাম যা API প্রক্সি কনফিগারেশনের name বৈশিষ্ট্য থেকে আলাদা হতে পারে। | N/A | না |
Policies | এই API প্রক্সির /policies ডিরেক্টরিতে নীতির একটি তালিকা। এজ ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি হলেই আপনি সাধারণত এই উপাদানটি দেখতে পাবেন। এটি কেবল একটি 'প্রকাশিত' সেটিং, যা API প্রক্সির বিষয়বস্তুতে দৃশ্যমানতা প্রদানের জন্য ডিজাইন করা হয়েছে। | N/A | না |
ProxyEndpoints | এই API প্রক্সির /proxies ডিরেক্টরিতে ProxyEndpoint-এর একটি তালিকা। এজ ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি হলেই আপনি সাধারণত এই উপাদানটি দেখতে পাবেন। এটি কেবল একটি 'প্রকাশিত' সেটিং, যা API প্রক্সির বিষয়বস্তুতে দৃশ্যমানতা প্রদানের জন্য ডিজাইন করা হয়েছে। | N/A | না |
Resources | এই API প্রক্সির /resources ডিরেক্টরিতে সম্পদের একটি তালিকা (JavaScript, Python, Java, XSLT)। এজ ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি হলেই আপনি সাধারণত এই উপাদানটি দেখতে পাবেন। এটি কেবল একটি 'প্রকাশিত' সেটিং, যা API প্রক্সির বিষয়বস্তুতে দৃশ্যমানতা প্রদানের জন্য ডিজাইন করা হয়েছে। | N/A | না |
Spec | API প্রক্সির সাথে যুক্ত OpenAPI স্পেসিফিকেশন সনাক্ত করে। মানটি একটি URL বা স্পেসিফিকেশন স্টোরের একটি পাথে সেট করা আছে। দ্রষ্টব্য : স্পেসিফিকেশন স্টোরটি শুধুমাত্র নিউ এজ অভিজ্ঞতায় উপলব্ধ। স্পেসিফিকেশন স্টোর সম্পর্কে আরও তথ্যের জন্য, ম্যানেজিং এবং শেয়ারিং স্পেসিফিকেশন দেখুন। | N/A | না |
TargetServers | এই API প্রক্সির যেকোন টার্গেটএন্ডপয়েন্টে উল্লেখিত টার্গেট সার্ভারের একটি তালিকা। এজ ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি হলেই আপনি সাধারণত এই উপাদানটি দেখতে পাবেন। এটি কেবল একটি 'প্রকাশিত' সেটিং, যা API প্রক্সির বিষয়বস্তুতে দৃশ্যমানতা প্রদানের জন্য ডিজাইন করা হয়েছে। | N/A | না |
TargetEndpoints | এই API প্রক্সির /targets ডিরেক্টরিতে TargetEndpoint-এর একটি তালিকা। এজ ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি হলেই আপনি সাধারণত এই উপাদানটি দেখতে পাবেন। এটি কেবল একটি 'প্রকাশিত' সেটিং, যা API প্রক্সির বিষয়বস্তুতে দৃশ্যমানতা প্রদানের জন্য ডিজাইন করা হয়েছে। | N/A | না |
প্রক্সিএন্ডপয়েন্ট
নিম্নলিখিত চিত্রটি অনুরোধ/প্রতিক্রিয়া প্রবাহ দেখায়:
/apiproxy/proxies/default.xml
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 | |||
name | ProxyEndpoint এর নাম। API প্রক্সি কনফিগারেশনের মধ্যে অনন্য হতে হবে, যখন (বিরল ক্ষেত্রে) একাধিক প্রক্সিএন্ডপয়েন্ট সংজ্ঞায়িত করা হয়। নামের মধ্যে আপনি যে অক্ষরগুলি ব্যবহার করতে পারবেন সেগুলি নিম্নলিখিতগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9._\-$ % । | N/A | হ্যাঁ |
PreFlow | একটি অনুরোধ বা প্রতিক্রিয়ার প্রিফ্লো ফ্লোতে নীতিগুলি সংজ্ঞায়িত করে৷ | N/A | হ্যাঁ |
Flows | একটি অনুরোধ বা প্রতিক্রিয়ার শর্তাধীন প্রবাহে নীতিগুলি সংজ্ঞায়িত করে৷ | N/A | হ্যাঁ |
PostFlow | একটি অনুরোধ বা প্রতিক্রিয়ার পোস্টফ্লো ফ্লোতে নীতিগুলি সংজ্ঞায়িত করে৷ | N/A | হ্যাঁ |
HTTPProxyConnection | API প্রক্সির সাথে যুক্ত নেটওয়ার্ক ঠিকানা এবং URI পাথ সংজ্ঞায়িত করে | ||
BasePath | একটি প্রয়োজনীয় স্ট্রিং যা সঠিক API প্রক্সিতে আগত বার্তাগুলিকে রুট করতে Apigee Edge দ্বারা ব্যবহৃত URI পাথটিকে অনন্যভাবে সনাক্ত করে৷ বেসপাথ হল একটি URI খণ্ড (উদাহরণস্বরূপ বেস পাথগুলিতে একটি ওয়াইল্ডকার্ড ব্যবহার করা আপনি API প্রক্সি বেস পাথগুলিতে এক বা একাধিক "*" ওয়াইল্ডকার্ড ব্যবহার করতে পারেন৷ উদাহরণস্বরূপ, গুরুত্বপূর্ণ: Apigee একটি বেস পাথের প্রথম উপাদান হিসাবে একটি ওয়াইল্ডকার্ড "*" ব্যবহার করা সমর্থন করে না। উদাহরণস্বরূপ, এটি সমর্থিত নয়: | / | হ্যাঁ |
VirtualHost | একটি পরিবেশের জন্য নির্দিষ্ট বেস URL-এর সাথে একটি API প্রক্সি সংযুক্ত করে। একটি ভার্চুয়ালহোস্ট একটি নামযুক্ত কনফিগারেশন যা একটি পরিবেশের জন্য এক বা একাধিক URL সংজ্ঞায়িত করে। প্রক্সিএন্ডপয়েন্টের জন্য সংজ্ঞায়িত নামকৃত ভার্চুয়াল হোস্টগুলি সেই ডোমেন এবং পোর্টগুলি নির্ধারণ করে যেখানে একটি API প্রক্সি প্রকাশ করা হয় এবং, এক্সটেনশনের মাধ্যমে, অ্যাপ্লিকেশনগুলি একটি API প্রক্সি চালু করতে ব্যবহার করে এমন URL। ডিফল্টরূপে, দুটি নামের VirtualHosts একটি পরিবেশের জন্য সংজ্ঞায়িত করা হয়: | ডিফল্ট | না |
Properties | ঐচ্ছিক HTTP কনফিগারেশন সেটিংসের একটি সেট <ProxyEndpoint> এর বৈশিষ্ট্য হিসাবে সংজ্ঞায়িত করা যেতে পারে। | N/A | না |
FaultRules | প্রক্সিএন্ডপয়েন্ট একটি ত্রুটির প্রতি কীভাবে প্রতিক্রিয়া দেখায় তা সংজ্ঞায়িত করে। একটি ফল্ট নিয়ম দুটি আইটেম নির্দিষ্ট করে:
হ্যান্ডলিং ফল্ট দেখুন. | N/A | না |
DefaultFaultRule | কোনো ত্রুটি (সিস্টেম, পরিবহন, বার্তাপ্রেরণ বা নীতি) পরিচালনা করে যা স্পষ্টভাবে অন্য ত্রুটি নিয়ম দ্বারা পরিচালিত হয় না। হ্যান্ডলিং ফল্ট দেখুন. | N/A | না |
RouteRule | ProxyEndpoint অনুরোধ পাইপলাইন দ্বারা প্রক্রিয়াকরণের পরে অন্তর্মুখী অনুরোধ বার্তাগুলির গন্তব্য নির্ধারণ করে৷ সাধারণত, RouteRule একটি নামযুক্ত TargetEndpoint কনফিগারেশন নির্দেশ করে, কিন্তু এটি সরাসরি একটি URL-এও নির্দেশ করতে পারে। | ||
Name | প্রয়োজনীয় বৈশিষ্ট্য, যা RouteRule-এর জন্য একটি নাম প্রদান করে। নামের মধ্যে আপনি যে অক্ষরগুলি ব্যবহার করতে পারবেন সেগুলি নিম্নলিখিতগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9._\-$ % । উদাহরণস্বরূপ, Cat2 %_ একটি আইনি নাম। | N/A | হ্যাঁ |
Condition | রানটাইমে গতিশীল রাউটিং এর জন্য ব্যবহৃত একটি ঐচ্ছিক শর্তসাপেক্ষ বিবৃতি। শর্তসাপেক্ষ RouteRules দরকারী, উদাহরণস্বরূপ, ব্যাকএন্ড সংস্করণ সমর্থন করার জন্য বিষয়বস্তু-ভিত্তিক রাউটিং সক্ষম করতে। | N/A | না |
TargetEndpoint | একটি ঐচ্ছিক স্ট্রিং যা একটি নামযুক্ত TargetEndpoint কনফিগারেশন সনাক্ত করে৷ একটি নামযুক্ত TargetEndpoint হল একটি TargetEndpoint নামকরণ করে, আপনি নির্দেশ করেন যে ProxyEndpoint অনুরোধ পাইপলাইন দ্বারা প্রক্রিয়াকরণের পরে অনুরোধ বার্তাগুলি কোথায় ফরোয়ার্ড করা উচিত৷ মনে রাখবেন এটি একটি ঐচ্ছিক সেটিং। একটি প্রক্সিএন্ডপয়েন্ট সরাসরি একটি URL কল করতে পারে। উদাহরণস্বরূপ, একটি জাভাস্ক্রিপ্ট বা জাভা রিসোর্স, একটি HTTP ক্লায়েন্টের ভূমিকায় কাজ করে, একটি TargetEndpoint এর মৌলিক দায়িত্ব পালন করতে পারে, যা একটি ব্যাকএন্ড পরিষেবাতে অনুরোধগুলি ফরোয়ার্ড করা। | N/A | না |
URL | একটি ঐচ্ছিক স্ট্রিং যা প্রক্সিএন্ডপয়েন্ট দ্বারা ডাকা একটি আউটবাউন্ড নেটওয়ার্ক ঠিকানা সংজ্ঞায়িত করে, যেকোন টার্গেটএন্ডপয়েন্ট কনফিগারেশনকে বাইপাস করে যা /targets অধীনে সংরক্ষিত হতে পারে | N/A | না |
কিভাবে RouteRules কনফিগার করবেন
একটি নামযুক্ত TargetEndpoint /apiproxy/targets
অধীনে একটি কনফিগারেশন ফাইলকে বোঝায় যেখানে RouteRule ProxyEndpoint দ্বারা প্রক্রিয়াকরণের পরে একটি অনুরোধ ফরোয়ার্ড করে।
উদাহরণস্বরূপ, নিম্নলিখিত RouteRule কনফিগারেশনকে বোঝায় /apiproxy/targets/myTarget.xml
:
<RouteRule name="default"> <TargetEndpoint>myTarget</TargetEndpoint> </RouteRule>
সরাসরি URL আহ্বান
একটি প্রক্সিএন্ডপয়েন্ট সরাসরি একটি ব্যাকএন্ড পরিষেবা চালু করতে পারে। ডাইরেক্ট ইউআরএল আমন্ত্রণ /apiproxy/targets
অধীনে যেকোনও নামযুক্ত TargetEndpoints কনফিগারেশনকে বাইপাস করে। এই কারণে, TargetEndpoint হল একটি ঐচ্ছিক API প্রক্সি কনফিগারেশন, যদিও বাস্তবে, প্রক্সিএন্ডপয়েন্ট থেকে সরাসরি আমন্ত্রণ বাঞ্ছনীয় নয়।
উদাহরণস্বরূপ, নিম্নলিখিত RouteRule http://api.mycompany.com/v2
এ একটি HTTP কল করে।
<RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
শর্তসাপেক্ষ রুট
রানটাইমে গতিশীল রাউটিং সমর্থন করার জন্য রাউটার রুলস চেইন করা যেতে পারে। ইনবাউন্ড অনুরোধগুলিকে নামযুক্ত TargetEndpoint কনফিগারেশনে, সরাসরি URL-এ বা দুটির সংমিশ্রণে, HTTP শিরোনাম, বার্তা সামগ্রী, ক্যোয়ারী প্যারামিটার বা প্রাসঙ্গিক তথ্য যেমন দিনের সময়, লোকেল ইত্যাদির উপর ভিত্তি করে রুট করা যেতে পারে।
Apigee Edge-এর অন্যান্য শর্তসাপেক্ষ বিবৃতির মতো শর্তসাপেক্ষ রুট রুলস কাজ করে। শর্তের রেফারেন্স এবং ভেরিয়েবল রেফারেন্স দেখুন।
উদাহরণস্বরূপ, নিম্নলিখিত RouteRule সংমিশ্রণটি প্রথমে একটি HTTP হেডারের মান যাচাই করার জন্য অন্তর্মুখী অনুরোধের মূল্যায়ন করে। যদি HTTP হেডার routeTo
এর মান TargetEndpoint1
থাকে, তাহলে অনুরোধটি TargetEndpoint1 নামের TargetEndpoint1
এ ফরোয়ার্ড করা হয়। যদি না হয়, তাহলে ইনবাউন্ড অনুরোধটি 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>
শূন্য রুট
একটি নাল RouteRule সংজ্ঞায়িত করা যেতে পারে এমন পরিস্থিতিতে সমর্থন করার জন্য যেখানে অনুরোধ বার্তাটি TargetEndpoint এ ফরোয়ার্ড করার প্রয়োজন নেই। এটি উপযোগী যখন প্রক্সিএন্ডপয়েন্ট সমস্ত প্রয়োজনীয় প্রক্রিয়াকরণ করে, উদাহরণস্বরূপ, জাভাস্ক্রিপ্ট ব্যবহার করে একটি বাহ্যিক পরিষেবাতে কল করা বা 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 একটি ব্যাকএন্ড পরিষেবা বা API-তে ক্লায়েন্ট হিসাবে কাজ করে -- এটি অনুরোধ পাঠায় এবং প্রতিক্রিয়া গ্রহণ করে।
একটি API প্রক্সির কোনো TargetEndpoint থাকতে হবে না। প্রক্সিএন্ডপয়েন্ট সরাসরি ইউআরএল কল করার জন্য কনফিগার করা যেতে পারে। কোন টার্গেটএন্ডপয়েন্ট ছাড়া একটি API প্রক্সিতে সাধারণত একটি প্রক্সিএন্ডপয়েন্ট থাকে যা হয় সরাসরি একটি ব্যাকএন্ড পরিষেবাকে কল করে, অথবা যা জাভা বা জাভাস্ক্রিপ্ট ব্যবহার করে কোনও পরিষেবা কল করার জন্য কনফিগার করা হয়।
টার্গেটএন্ডপয়েন্ট কনফিগারেশন
/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 নিম্নলিখিত উপায়ে একটি লক্ষ্য কল করতে পারে:
- HTTP(S) কলের জন্য HTTPTargetConnection
- স্থানীয় প্রক্সি-টু-প্রক্সি চেইনিংয়ের জন্য স্থানীয় লক্ষ্য সংযোগ
- এজ-হোস্টেড Node.js স্ক্রিপ্টে কলের জন্য ScriptTarget
একটি TargetEndpoint এ শুধুমাত্র একটি কনফিগার করুন।
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
TargetEndpoint | |||
name | TargetEndpoint এর নাম, যা API প্রক্সি কনফিগারেশনের মধ্যে অনন্য হতে হবে। TargetEndPoint-এর নামটি প্রক্সিএন্ডপয়েন্ট রাউটার রুলে আউটবাউন্ড প্রক্রিয়াকরণের জন্য সরাসরি অনুরোধের জন্য ব্যবহার করা হয়। নামের মধ্যে আপনি যে অক্ষরগুলি ব্যবহার করতে পারবেন সেগুলি নিম্নলিখিতগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9._\-$ % । | N/A | হ্যাঁ |
PreFlow | একটি অনুরোধ বা প্রতিক্রিয়ার প্রিফ্লো ফ্লোতে নীতিগুলি সংজ্ঞায়িত করে৷ | N/A | হ্যাঁ |
Flows | একটি অনুরোধ বা প্রতিক্রিয়ার শর্তাধীন প্রবাহে নীতিগুলি সংজ্ঞায়িত করে৷ | N/A | হ্যাঁ |
PostFlow | একটি অনুরোধ বা প্রতিক্রিয়ার পোস্টফ্লো ফ্লোতে নীতিগুলি সংজ্ঞায়িত করে৷ | N/A | হ্যাঁ |
HTTPTargetConnection | এর চাইল্ড এলিমেন্টের সাথে, HTTP এর মাধ্যমে একটি ব্যাকএন্ড রিসোর্স পৌঁছানোর নির্দিষ্ট করে। আপনি যদি HTTPTargetConnection ব্যবহার করেন, তাহলে অন্য ধরনের টার্গেট কানেকশন কনফিগার করবেন না (ScriptTarget বা LocalTargetConnection)। | ||
URL | ব্যাকএন্ড পরিষেবার নেটওয়ার্ক ঠিকানা সংজ্ঞায়িত করে যেখানে TargetEndpoint অনুরোধ বার্তাগুলি ফরোয়ার্ড করে। | N/A | না |
LoadBalancer | এক বা একাধিক নামের TargetServer কনফিগারেশন সংজ্ঞায়িত করে। নামযুক্ত টার্গেট সার্ভার কনফিগারেশনগুলি 2 বা তার বেশি এন্ডপয়েন্ট কনফিগারেশন সংযোগ সংজ্ঞায়িত করার জন্য লোড ব্যালেন্সিংয়ের জন্য ব্যবহার করা যেতে পারে। আপনি কংক্রিট ব্যাকএন্ড পরিষেবা শেষ পয়েন্ট URL গুলি থেকে API প্রক্সি কনফিগারেশন ডিকপল করতে TargetServers ব্যবহার করতে পারেন। | N/A | না |
Properties | ঐচ্ছিক HTTP কনফিগারেশন সেটিংসের একটি সেট <TargetEndpoint> এর বৈশিষ্ট্য হিসাবে সংজ্ঞায়িত করা যেতে পারে। | N/A | না |
SSLInfo | API প্রক্সি এবং লক্ষ্য পরিষেবার মধ্যে TLS/SSL সংযোগ নিয়ন্ত্রণ করতে একটি TargetEndpoint এ ঐচ্ছিকভাবে TLS/SSL সেটিংস সংজ্ঞায়িত করুন। TLS/SSL টার্গেটএন্ডপয়েন্ট কনফিগারেশন দেখুন। | N/A | না |
LocalTargetConnection | এর চাইল্ড এলিমেন্টের সাথে, লোড ব্যালেন্সিং এবং মেসেজ প্রসেসরের মতো নেটওয়ার্ক বৈশিষ্ট্যগুলিকে বাইপাস করে স্থানীয়ভাবে পৌঁছানোর জন্য একটি সংস্থান নির্দিষ্ট করে। টার্গেট রিসোর্স নির্দিষ্ট করতে, হয় APIProxy চাইল্ড এলিমেন্ট (ProxyEndpoint এলিমেন্ট সহ) অথবা পাথ চাইল্ড এলিমেন্ট অন্তর্ভুক্ত করুন। আরও তথ্যের জন্য, API প্রক্সি একসাথে চেইনিং দেখুন। আপনি যদি LocalTargetConnection ব্যবহার করেন, অন্য ধরনের টার্গেট কানেকশন কনফিগার করবেন না (HTTPTargetConnection বা ScriptTarget)। | ||
APIProxy | অনুরোধের লক্ষ্য হিসাবে ব্যবহার করার জন্য একটি API প্রক্সির নাম নির্দিষ্ট করে৷ টার্গেট প্রক্সি অবশ্যই প্রক্সি পাঠানোর অনুরোধের মতো একই সংস্থা এবং পরিবেশে থাকতে হবে। এটি পাথ উপাদান ব্যবহার করার একটি বিকল্প। | N/A | না |
ProxyEndpoint | টার্গেট প্রক্সির প্রক্সিএন্ডপয়েন্টের নাম নির্দিষ্ট করতে APIProxy-এর সাথে ব্যবহার করা হয়। | N/A | না |
Path | অনুরোধের লক্ষ্য হিসাবে ব্যবহার করার জন্য একটি API প্রক্সির এন্ডপয়েন্ট পাথ নির্দিষ্ট করে। টার্গেট প্রক্সি অবশ্যই প্রক্সি পাঠানোর অনুরোধের মতো একই সংস্থা এবং পরিবেশে থাকতে হবে। এটি APIProxy ব্যবহার করার একটি বিকল্প। | N/A | না |
FaultRules | TargetEndpoint একটি ত্রুটির প্রতি কীভাবে প্রতিক্রিয়া দেখায় তা সংজ্ঞায়িত করে। একটি ফল্ট নিয়ম দুটি আইটেম নির্দিষ্ট করে:
হ্যান্ডলিং ফল্ট দেখুন. | N/A | না |
DefaultFaultRule | অন্য কোন ত্রুটি (সিস্টেম, পরিবহন, বার্তা বা নীতি) পরিচালনা করে যা স্পষ্টভাবে অন্য ফল্ট রুলের দ্বারা পরিচালিত হয় না। হ্যান্ডলিং ফল্ট দেখুন. | N/A | না |
ScriptTarget | |||
ResourceURL | রিসোর্স টাইপ (নোড) এবং প্রধান Node.js স্ক্রিপ্টের নাম সংজ্ঞায়িত করে যা TargetEndpoint কার্যকারিতা প্রয়োগ করে। স্ক্রিপ্টটি আপনার API প্রক্সির রিসোর্স ফাইলের সাথে অন্তর্ভুক্ত করা দরকার। একটি বিদ্যমান API প্রক্সিতে Node.js যোগ করা দেখুন। আপনি যদি ScriptTarget ব্যবহার করেন, অন্য ধরনের টার্গেট কানেকশন কনফিগার করবেন না (HTTPTargetConnection বা LocalTargetConnection)। | N/A | হ্যাঁ |
EnvironmentVariable | ঐচ্ছিকভাবে প্রধান Node.js স্ক্রিপ্টে পরিবেশ ভেরিয়েবল পাস করুন। | N/A | না |
Arguments | ঐচ্ছিকভাবে প্রধান Node.js স্ক্রিপ্টে আর্গুমেন্ট পাঠান। | N/A | না |
TLS/SSL টার্গেটএন্ডপয়েন্ট কনফিগারেশন
টার্গেটএন্ডপয়েন্টগুলিকে প্রায়শই ভিন্ন ভিন্ন ব্যাকএন্ড পরিকাঠামোর সাথে HTTPS সংযোগগুলি পরিচালনা করতে হয়। এই কারণে, অনেকগুলি TLS/SSL কনফিগারেশন সেটিংস সমর্থিত।
TLS/SSL টার্গেটএন্ডপয়েন্ট কনফিগারেশন উপাদান
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
SSLInfo | |||
Enabled | শেষ পয়েন্টের জন্য TLS/SSL সক্ষম করা আছে কিনা তা নির্দেশ করে। ডিফল্ট মান true যদি <URL> HTTPS প্রোটোকল নির্দিষ্ট করে এবং false যদি <URL> HTTP নির্দিষ্ট করে। | সত্য যদি <URL> HTTPS নির্দিষ্ট করে | না |
TrustStore | বিশ্বস্ত সার্ভার সার্টিফিকেট ধারণকারী একটি কীস্টোর। | N/A | না |
ClientAuthEnabled | একটি সেটিং যা আউটবাউন্ড ক্লায়েন্ট প্রমাণীকরণ চালু করে (2-উপায় TLS/SSL) | মিথ্যা | না |
KeyStore | আউটবাউন্ড ক্লায়েন্ট প্রমাণীকরণের জন্য ব্যবহৃত ব্যক্তিগত কী ধারণকারী একটি কীস্টোর | N/A | হ্যাঁ (যদি ClientAuthEnabled সত্য হয়) |
KeyAlias | আউটবাউন্ড ক্লায়েন্ট প্রমাণীকরণের জন্য ব্যবহৃত ব্যক্তিগত কী-এর মূল উপনাম | N/A | হ্যাঁ (যদি ClientAuthEnabled সত্য হয়) |
Ciphers | আউটবাউন্ড TLS/SSL এর জন্য সমর্থিত সাইফার। যদি কোনো সাইফার নির্দিষ্ট করা না থাকে, তাহলে JVM-এর জন্য উপলব্ধ সমস্ত সাইফারের অনুমতি দেওয়া হবে। সাইফারগুলিকে সীমাবদ্ধ করতে, সমর্থিত সাইফারগুলি তালিকাভুক্ত করে নিম্নলিখিত উপাদানগুলি যুক্ত করুন: <Ciphers> <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher> <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher> </Ciphers> | N/A | না |
Protocols | আউটবাউন্ড TLS/SSL এর জন্য সমর্থিত প্রোটোকল। যদি কোন প্রোটোকল নির্দিষ্ট করা না থাকে, তাহলে JVM-এর জন্য উপলব্ধ সমস্ত প্রোটোকল অনুমোদিত হবে। প্রোটোকল সীমাবদ্ধ করতে, সমর্থিত প্রোটোকল তালিকাভুক্ত নিম্নলিখিত উপাদানগুলি যোগ করুন: <Protocols> <Protocol>TLSv1.1</Protocol> <Protocol>TLSv1.2</Protocol> </Protocols> | N/A | না |
CommonName | নির্দিষ্ট করা হলে, একটি মান যার বিপরীতে লক্ষ্য শংসাপত্রের সাধারণ নাম যাচাই করা হয়। এই মান শুধুমাত্র TargetEndpoint এবং TargetServer কনফিগারেশনের জন্য বৈধ। এটি ভার্চুয়ালহোস্ট কনফিগারেশনের জন্য বৈধ নয়। ডিফল্টরূপে, নির্দিষ্ট করা মান টার্গেট সার্টিফিকেটের সাধারণ নামের সাথে হুবহু মিলে যায়। উদাহরণস্বরূপ, <CommonName>-এর মান হিসাবে ঐচ্ছিকভাবে, Apigee উদাহরণস্বরূপ, লক্ষ্য শংসাপত্রে <CommonName wildcardMatch="true">*.myhost.com</CommonName> | N/A | না |
আউটবাউন্ড ক্লায়েন্ট প্রমাণীকরণ সক্ষম সহ নমুনা 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>
বিস্তারিত নির্দেশাবলীর জন্য, এজ থেকে ব্যাকএন্ডে TLS কনফিগার করা দেখুন (ক্লাউড এবং প্রাইভেট ক্লাউড)।
TLS/SSL মানগুলি গতিশীলভাবে সেট করতে ফ্লো ভেরিয়েবল ব্যবহার করে
নমনীয় রানটাইম প্রয়োজনীয়তা সমর্থন করার জন্য আপনি গতিশীলভাবে TLS/SSL বিবরণ সেট করতে পারেন। উদাহরণস্বরূপ, যদি আপনার প্রক্সি দুটি সম্ভাব্য ভিন্ন লক্ষ্যগুলির সাথে সংযোগ করে (একটি পরীক্ষার লক্ষ্য এবং একটি উত্পাদন লক্ষ্য), আপনি আপনার API প্রক্সি প্রোগ্রাম্যাটিকভাবে সনাক্ত করতে পারেন যে এটি কোন পরিবেশে কল করছে এবং গতিশীলভাবে উপযুক্ত কীস্টোর এবং ট্রাস্টস্টোরে রেফারেন্স সেট করতে পারে৷ নিম্নলিখিত Apigee সম্প্রদায় নিবন্ধটি এই দৃশ্যটিকে আরও বিস্তারিতভাবে ব্যাখ্যা করে এবং স্থাপনযোগ্য API প্রক্সি উদাহরণ প্রদান করে: https://community.apigee.com/articles/21424/dynamic-sslinfo-for-targetendpoint-using-variable.html ।
টার্গেটএন্ডপয়েন্ট কনফিগারেশনে কিভাবে <SSLInfo>
ট্যাগ সেট করা হবে তার নিচের উদাহরণে, রানটাইমে মানগুলি সরবরাহ করা যেতে পারে, উদাহরণস্বরূপ, একটি জাভা কলআউট, একটি জাভাস্ক্রিপ্ট নীতি, বা একটি অ্যাসাইন মেসেজ নীতি। আপনি সেট করতে চান এমন মান ধারণ করে যেকোন বার্তা ভেরিয়েবল ব্যবহার করুন।
ভেরিয়েবলগুলি শুধুমাত্র নিম্নলিখিত উপাদানগুলিতে অনুমোদিত।
<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 শংসাপত্রের মেয়াদ শেষ হলে আপনাকে বিবেচনা করতে হবে, অথবা সিস্টেম কনফিগারেশনে পরিবর্তনের জন্য আপনাকে শংসাপত্র আপডেট করতে হবে। প্রাইভেট ক্লাউড ইনস্টলেশনের জন্য একটি প্রান্তে, স্ট্যাটিক মান ব্যবহার করে বা ফ্লো ভেরিয়েবল ব্যবহার করে TLS/SSL কনফিগার করার সময়, আপনাকে মেসেজ প্রসেসরগুলি পুনরায় চালু করতে হবে।
আরও জানতে, একটি TLS শংসাপত্র আপডেট করুন দেখুন।
যাইহোক, আপনি পরিবর্তে কীস্টোর বা ট্রাস্টস্টোরের একটি রেফারেন্স ব্যবহার করার জন্য টার্গেটএন্ডপয়েন্টটিকে ঐচ্ছিকভাবে কনফিগার করতে পারেন। একটি রেফারেন্স ব্যবহার করার সুবিধা হল যে আপনি বার্তা প্রসেসর পুনরায় চালু না করেই 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
TargetEndpoints তিনটি লোড ব্যালেন্সিং অ্যালগরিদম ব্যবহার করে একাধিক নামযুক্ত TargetServers জুড়ে লোড ব্যালেন্সিং সমর্থন করে।
বিস্তারিত নির্দেশাবলীর জন্য, ব্যাকএন্ড সার্ভার জুড়ে লোড ব্যালেন্সিং পড়ুন।
নীতিমালা
API প্রক্সির /policies
ডিরেক্টরিতে API প্রক্সিতে ফ্লোতে সংযুক্ত করার জন্য উপলব্ধ সমস্ত নীতি রয়েছে।
নীতি কনফিগারেশন উপাদান
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
Policy | |||
name | নীতির অভ্যন্তরীণ নাম। নামের মধ্যে আপনি যে অক্ষরগুলি ব্যবহার করতে পারেন তা সীমাবদ্ধ: ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | হ্যাঁ |
enabled | নীতি প্রয়োগ করতে নীতি "বন্ধ" করতে | সত্য | না |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | না |
async | দ্রষ্টব্য : এই বৈশিষ্ট্যটি নীতিকে অ্যাসিঙ্ক্রোনাসভাবে কার্যকর করে না। বেশিরভাগ ক্ষেত্রে, এটিকে ডিফল্ট API প্রক্সিগুলিতে অ্যাসিঙ্ক্রোনাস আচরণ ব্যবহার করতে, JavaScript অবজেক্ট মডেল দেখুন। | মিথ্যা | না |
নীতি সংযুক্তি
নিম্নলিখিত চিত্রটি API প্রক্সি ফ্লো এক্সিকিউশন সিকোয়েন্স দেখায়:
উপরে দেখানো হিসাবে:
ফ্লোতে প্রক্রিয়াকরণের ধাপ হিসেবে নীতিগুলি সংযুক্ত করা হয়েছে। নীতির নাম একটি প্রক্রিয়াকরণ পদক্ষেপ হিসাবে প্রয়োগ করা নীতি উল্লেখ করতে ব্যবহার করা হয়। একটি নীতি সংযুক্তির বিন্যাস নিম্নরূপ:
<Step><Name>MyPolicy</Name></Step>
নীতিগুলি সেই ক্রম অনুসারে প্রয়োগ করা হয় যাতে তারা একটি প্রবাহের সাথে সংযুক্ত থাকে৷ যেমন:
<Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step>
নীতি সংযুক্তি কনফিগারেশন উপাদান
নাম | বর্ণনা | ডিফল্ট | প্রয়োজন? |
---|---|---|---|
Step | |||
Name | এই ধাপের সংজ্ঞা দ্বারা কার্যকর করা নীতির নাম। | N/A | হ্যাঁ |
Condition | একটি শর্তসাপেক্ষ বিবৃতি যা নির্ধারণ করে যে নীতি প্রয়োগ করা হচ্ছে কিনা। যদি কোনো নীতির কোনো সংশ্লিষ্ট শর্ত থাকে, তাহলে শর্তসাপেক্ষ বিবৃতিটি সত্য হিসেবে মূল্যায়ন করলেই নীতিটি কার্যকর হয়। | N/A | না |
প্রবাহিত হয়
ProxyEndpoint এবং TargetEndpoint অনুরোধ এবং প্রতিক্রিয়া বার্তা প্রক্রিয়াকরণের জন্য একটি পাইপলাইন সংজ্ঞায়িত করে। একটি প্রক্রিয়াকরণ পাইপলাইনে একটি অনুরোধ প্রবাহ এবং একটি প্রতিক্রিয়া প্রবাহ থাকে। প্রতিটি অনুরোধ প্রবাহ এবং প্রতিক্রিয়া প্রবাহ একটি প্রিফ্লো, এক বা একাধিক ঐচ্ছিক 'শর্তাধীন' বা 'নামযুক্ত' প্রবাহ এবং একটি পোস্টফ্লোতে বিভক্ত।
- প্রিফ্লো: সর্বদা কার্যকর করে। যেকোনো শর্তসাপেক্ষ প্রবাহের আগে কার্যকর করে।
- পোস্টফ্লো: সর্বদা কার্যকর করে। যেকোনো শর্তসাপেক্ষ প্রবাহের পরে কার্যকর করে।
উপরন্তু, আপনি ProxyEndpoint-এ একটি PostClientFlow যোগ করতে পারেন, যা অনুরোধকারী ক্লায়েন্ট অ্যাপে প্রতিক্রিয়া ফেরত দেওয়ার পরে কার্যকর হয়। শুধুমাত্র MessageLogging নীতি এবং Google Stackdriver লগিং এক্সটেনশন এই প্রবাহের সাথে সংযুক্ত করা যেতে পারে। PostClientFlow API প্রক্সি লেটেন্সি হ্রাস করে এবং লগিংয়ের জন্য তথ্য উপলব্ধ করে যা ক্লায়েন্টকে প্রতিক্রিয়া ফেরত না দেওয়া পর্যন্ত গণনা করা হয় না, যেমন client.sent.start.timestamp
এবং client.sent.end.timestamp
.প্রবাহটি প্রাথমিকভাবে ব্যবহৃত হয় প্রতিক্রিয়া বার্তার জন্য শুরু এবং শেষ টাইমস্ট্যাম্পের মধ্যে সময়ের ব্যবধান পরিমাপ করা।
একটি দ্রুত কিভাবে ভিডিও দেখুন
ভিডিও: পোস্টক্লায়েন্টফ্লোতে একটি বার্তা লগিং ব্যবহার করার জন্য এই ছোট ভিডিওটি দেখুন।
এখানে একটি পোস্ট ক্লায়েন্টফ্লো-এর একটি উদাহরণ রয়েছে যেখানে একটি বার্তা লগিং নীতি সংযুক্ত রয়েছে৷
... <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <PostClientFlow> <Request/> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow> ...
API প্রক্সি প্রসেসিং পাইপলাইন নিম্নোক্ত ক্রমানুসারে প্রবাহ নির্বাহ করে:
অনুরোধ পাইপলাইন:
- প্রক্সি অনুরোধ PreFlow
- প্রক্সি অনুরোধ শর্তসাপেক্ষ প্রবাহ (ঐচ্ছিক)
- প্রক্সি অনুরোধ পোস্টফ্লো
- লক্ষ্য অনুরোধ PreFlow
- লক্ষ্য অনুরোধ শর্তাধীন প্রবাহ (ঐচ্ছিক)
- লক্ষ্য অনুরোধ পোস্টফ্লো
প্রতিক্রিয়া পাইপলাইন:
- টার্গেট রেসপন্স প্রিফ্লো
- লক্ষ্য প্রতিক্রিয়া শর্তাধীন প্রবাহ (ঐচ্ছিক)
- টার্গেট রেসপন্স পোস্টফ্লো
- প্রক্সি রেসপন্স প্রিফ্লো
- প্রক্সি প্রতিক্রিয়া শর্তাধীন প্রবাহ (ঐচ্ছিক)
- প্রক্সি রেসপন্স পোস্টফ্লো
- পোস্ট ক্লায়েন্টফ্লো প্রতিক্রিয়া (ঐচ্ছিক)
শুধুমাত্র পলিসি অ্যাটাচমেন্ট সহ সেই ফ্লোগুলিকে ProxyEndpoint বা TargetEndpoint কনফিগারেশনে কনফিগার করতে হবে। PreFlow এবং PostFlow শুধুমাত্র একটি ProxyEndpoint বা TargetEndpoint কনফিগারেশনে নির্দিষ্ট করা প্রয়োজন যখন একটি নীতি প্রিফ্লো বা পোস্টফ্লো প্রক্রিয়াকরণের সময় প্রয়োগ করা প্রয়োজন।
শর্তসাপেক্ষ প্রবাহের বিপরীতে, প্রিফ্লো এবং পোস্টফ্লো উপাদানগুলির ক্রম গুরুত্বপূর্ণ নয়--এন্ডপয়েন্ট কনফিগারেশনে তারা যেখানেই উপস্থিত হোক না কেন 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 | একটি অনুরোধ বা প্রতিক্রিয়া প্রক্রিয়াকরণ পাইপলাইন A ProxyEndpoint বা TargetEndpoint দ্বারা সংজ্ঞায়িত | ||
Name | প্রবাহের অনন্য নাম। | N/A | হ্যাঁ |
Condition | একটি শর্তসাপেক্ষ বিবৃতি যা সত্য বা মিথ্যা মূল্যায়ন করতে বা তার বেশি ভেরিয়েবলের উপর মূল্যায়ন করে। পূর্বনির্ধারিত প্রিফ্লো এবং পোস্টফ্লো প্রকারগুলি ব্যতীত অন্যান্য সমস্ত ফ্লোকে অবশ্যই তাদের কার্যকর করার জন্য একটি শর্ত নির্ধারণ করতে হবে। | N/A | হ্যাঁ |
Request | অনুরোধ বার্তা প্রক্রিয়াকরণের সাথে যুক্ত পাইপলাইন | N/A | না |
Response | প্রতিক্রিয়া বার্তা প্রক্রিয়াকরণের সাথে যুক্ত পাইপলাইন | N/A | না |
ধাপ প্রক্রিয়াকরণ
শর্তসাপেক্ষ প্রবাহের অনুক্রমিক ক্রম Apigee Edge দ্বারা প্রয়োগ করা হয়। শর্তসাপেক্ষ প্রবাহ উপরে থেকে নীচে চালানো হয়। প্রথম শর্তসাপেক্ষ ফ্লো যার শর্ত true
মূল্যায়ন করা হয় তা কার্যকর করা হয় এবং শুধুমাত্র একটি শর্তসাপেক্ষ ফ্লো চালানো হয়।
উদাহরণস্বরূপ, নিম্নলিখিত ফ্লো কনফিগারেশনে, যে কোনো অন্তর্মুখী অনুরোধ যা পাথ প্রত্যয় /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>
সম্পদ
"রিসোর্স" (এপিআই প্রক্সিতে ব্যবহারের জন্য রিসোর্স ফাইল) হল স্ক্রিপ্ট, কোড এবং এক্সএসএল ট্রান্সফরমেশন যা পলিসি ব্যবহার করে ফ্লোতে সংযুক্ত করা যেতে পারে। এগুলি ব্যবস্থাপনা UI-তে API প্রক্সি সম্পাদকের "স্ক্রিপ্ট" বিভাগে প্রদর্শিত হয়৷
সমর্থিত সম্পদ প্রকারের জন্য সম্পদ ফাইল দেখুন।
সম্পদগুলি একটি API প্রক্সি, একটি পরিবেশ বা একটি সংস্থায় সংরক্ষণ করা যেতে পারে। প্রতিটি ক্ষেত্রে, একটি সম্পদ একটি নীতিতে নাম দ্বারা উল্লেখ করা হয়। API পরিষেবাগুলি API প্রক্সি থেকে পরিবেশে, সংস্থার স্তরে যাওয়ার মাধ্যমে নামটির সমাধান করে৷
সংস্থার স্তরে সঞ্চিত একটি সংস্থান যে কোনও পরিবেশে নীতি দ্বারা উল্লেখ করা যেতে পারে। পরিবেশ স্তরে সঞ্চিত একটি সংস্থান সেই পরিবেশের নীতিগুলি দ্বারা উল্লেখ করা যেতে পারে। API প্রক্সি স্তরে সঞ্চিত একটি সংস্থান শুধুমাত্র সেই API প্রক্সির নীতিগুলির দ্বারা উল্লেখ করা যেতে পারে৷