আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
যখন আপনি কোনো এপিআই প্রক্সিতে অনুরোধ করেন, তখন এপিআই প্রক্সিটি যেভাবে কনফিগার করা আছে তার উপর নির্ভর করে আপনি নিম্নলিখিত তথ্যগুলোর যেকোনো একটি বা সবগুলো পাঠাতে পারেন:
- অনুরোধ হেডার
- কোয়েরি প্যারামিটার
- ফর্ম ডেটা
- XML বা JSON পেলোড
- রিসোর্স ইউআরআই
ডিফল্টরূপে, একটি অনুরোধের সমস্ত ডেটা ProxyEndpoint থেকে TargetEndpoint-এ অপরিবর্তিতভাবে পাঠানো হয়। তাই, যখন TargetEndpoint ব্যাকএন্ড সার্ভারে অনুরোধটি পাঠায়, তখন মূল অনুরোধের সমস্ত তথ্য ব্যাকএন্ড পরিষেবাতে চলে যায়।
ব্যাকএন্ড পরিষেবা থেকে Edge-এর প্রাপ্ত প্রতিক্রিয়ার ক্ষেত্রেও একই কথা প্রযোজ্য। ডিফল্টরূপে, প্রতিক্রিয়ায় প্রাপ্ত সমস্ত ডেটা অপরিবর্তিতভাবে সেই অ্যাপে পাঠানো হয় যেখান থেকে অনুরোধটি করা হয়েছিল।
অনুরোধের ডেটা কীভাবে ব্যাকএন্ড সার্ভারে পাঠানো হয়?
নিম্নলিখিত চিত্রটি একটি এপিআই প্রক্সি সংজ্ঞা দেখাচ্ছে:

এই এপিআই প্রক্সির জন্য:
- এপিআই প্রক্সি ভার্চুয়াল হোস্ট: "ডিফল্ট"
- ভার্চুয়াল হোস্ট দ্বারা সংজ্ঞায়িত ডোমেইন: "http://myOrg-prod.apigee.net"
- প্রক্সি বেস পাথ: "/v1/weather"
- রাউট নিয়ম দ্বারা নির্দিষ্ট টার্গেটএন্ডপয়েন্ট: "ডিফল্ট"
- লক্ষ্য ইউআরএল: "http://weather.yahooapis.com"
একটি ক্লায়েন্ট অ্যাপ নিম্নলিখিত curl কমান্ডটি ব্যবহার করে এপিআই প্রক্সিতে একটি GET অনুরোধ পাঠায়:
curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282
লক্ষ্য করুন যে এই অনুরোধটিতে 'forecastrss' নামক রিসোর্স এবং একটি কোয়েরি প্যারামিটার, w রয়েছে। Edge নিচে দেখানো অনুযায়ী অনুরোধটি পার্স করে এবং অনুরোধের অংশবিশেষ ফ্লো ভেরিয়েবলে নির্ধারণ করে দেয়:
{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}ফ্লো ভেরিয়েবলগুলো নিম্নলিখিত মান দিয়ে সেট করা হয়েছে:
-
request.verb: "GET" -
proxy.basepath: "/v1/weather" -
proxy.pathsuffix: "forecastrss" -
request.querystring: "w=12797282"
এরপর টার্গেটএন্ডপয়েন্টটি অনুরোধ থেকে প্রাপ্ত তথ্য ব্যবহার করে ব্যাকএন্ড পরিষেবাতে একটি অনুরোধ পাঠায়:
{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}লক্ষ্য করুন, অনুরোধে নির্দিষ্ট করা রিসোর্স এবং কোয়েরি প্যারামিটারগুলো কীভাবে ব্যাকএন্ড সার্ভারের অনুরোধে স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়ে যায়। TargetEndpoint-এর সংজ্ঞা অনুযায়ী, অনুরোধটির রূপটি তখন নিম্নরূপ হয়:
curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282
কোয়েরি প্যারামিটারের মতোই, এপিআই প্রক্সিতে পাঠানো অনুরোধে আপনি যে কোনো হেডার বা ফর্ম প্যারামিটার অন্তর্ভুক্ত করেন, তা ব্যাকএন্ড সার্ভারে পাঠিয়ে দেওয়া হয়। উদাহরণস্বরূপ, আপনি নিচের অনুরোধটি করছেন যাতে একটি হেডার অন্তর্ভুক্ত রয়েছে:
curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282
অথবা হেডার এবং ফর্ম ডেটা অন্তর্ভুক্ত করার জন্য নীচের ফর্মে একটি অনুরোধ:
curl -X POST -H "Content-type:application/json" -d \
'{"email" : "janetutorialxml@example.com",
"firstName" : "Jane",
"lastName" : "Tutorial",
"userName" : "jtutorialxml"
}' \
http://myOrg-prod.apigee.net/v1/register/user
উভয় উদাহরণেই, হেডার এবং ফর্ম ডেটা অপরিবর্তিতভাবে ব্যাকএন্ড সার্ভিসে পাঠানো হয়। হেডারগুলো request.headers.count এবং request.headers.names এর মতো ফ্লো ভেরিয়েবল দ্বারা প্রকাশ করা হয়। ফর্ম ডেটা request.formparam.count এবং request.formparam.names এর মতো ফ্লো ভেরিয়েবল দ্বারা প্রকাশ করা হয়।
প্রতিক্রিয়া ডেটা কীভাবে ফেরত দেওয়া হয়?
ডিফল্টরূপে, রেসপন্সে ব্যাকএন্ড সার্ভিস থেকে Edge-এ আসা সমস্ত ডেটা অপরিবর্তিতভাবে সেই অ্যাপে পাঠানো হয় যেখান থেকে অনুরোধটি করা হয়েছিল। অনুরোধের জন্য উপরে যেমন বর্ণনা করা হয়েছে, রেসপন্সে ফেরত আসা ডেটা Edge-এর ফ্লো ভেরিয়েবলের মাধ্যমে অ্যাক্সেস করা যায়। আরও তথ্যের জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন।
একটি এপিআই প্রক্সিতে অনুরোধ এবং প্রতিক্রিয়া ডেটা অ্যাক্সেস করুন
অনেক সময়ই ব্যাকএন্ড সার্ভারে পাঠানোর আগে আপনি অনুরোধের ডেটা পরিবর্তন করতে চান। উদাহরণস্বরূপ:
- অনুরোধ যাচাই করার জন্য Edge কর্তৃক ব্যবহৃত নিরাপত্তা তথ্য মুছে ফেলতে। ব্যাকএন্ড পরিষেবার জন্য সেই তথ্যের প্রয়োজন নেই।
- ব্যাকএন্ড সার্ভিসে পাঠানো ডেটা যোগ করতে, যেমন ব্যবহারকারীদের ট্র্যাক করতে বা অ্যানালিটিক্স সংগ্রহ করতে।
- অনুরোধের তথ্যের উপর ভিত্তি করে শর্তসাপেক্ষে অনুরোধটি প্রক্রিয়া করার জন্য। উদাহরণস্বরূপ, একটি এপিআই প্রক্সির একাধিক টার্গেটএন্ডপয়েন্ট থাকতে পারে। অনুরোধের ব্যবহৃত টার্গেটএন্ডপয়েন্টটি অনুরোধের তথ্য দ্বারা নির্ধারিত হয়। এরপর ব্যাকএন্ড সার্ভিসে পাঠানোর আগে অনুরোধটি থেকে সেই তথ্যটি বাদ দেওয়া হয়।
রেসপন্সের ডেটার ক্ষেত্রেও একই কথা প্রযোজ্য। রেসপন্স প্রসেস করার অংশ হিসেবে, এপিআই প্রক্সি অনুরোধকারী অ্যাপে ডেটা ফেরত পাঠানোর আগে তা পরিবর্তন করতে চাইতে পারে।
অ্যাক্সেস অনুরোধ বার্তা
আপনি পলিসি ব্যবহার করে একটি অনুরোধ বার্তার অংশবিশেষ অ্যাক্সেস ও পরিবর্তন করতে পারেন। এই অংশগুলোর মধ্যে রয়েছে:
- হেডার
- কোয়েরি প্যারামিটার
- ফর্ম প্যারামিটার
- উৎস আইপি ঠিকানা
- HTTP বার্তার মূল অংশ
স্বাভাবিক কার্যপ্রবাহে, অনুরোধটি প্রক্রিয়াজাত হয়ে গেলে প্রক্সি রূপান্তরিত অনুরোধটি টার্গেটের কাছে পাঠিয়ে দেয়।
পলিসিগুলো রিকোয়েস্ট ভ্যারিয়েবল পরীক্ষা করতে পারে এবং তারপর সেই ভ্যারিয়েবলগুলোর বিষয়বস্তুর উপর ভিত্তি করে রিকোয়েস্টটি রূপান্তর বা প্রত্যাখ্যান করতে পারে। পলিসিগুলো উপযুক্ত ভ্যারিয়েবল সেট করার মাধ্যমে রিকোয়েস্টটি রূপান্তর করে, যেমন রিকোয়েস্ট হেডারের সাথে সম্পর্কিত ভ্যারিয়েবলগুলো।
অ্যাক্সেস প্রতিক্রিয়া বার্তা
রেসপন্স মেসেজে প্রযোজ্য ভেরিয়েবলগুলো ব্যবহার করে, পলিসিগুলো হেডার, কোয়েরি প্যারামিটার, ফর্ম প্যারামিটার, সোর্স আইপি অ্যাড্রেস, এইচটিটিপি মেসেজ বডি ইত্যাদি মেসেজের বিভিন্ন উপাদান অ্যাক্সেস করতে পারে।
প্রক্সি একটি প্রতিক্রিয়া বার্তা গ্রহণ করে এবং তারপর সেই প্রতিক্রিয়ার উপর মূল্যায়ন করা শর্তাবলীর ভিত্তিতে সেটির উপর একাধিক নীতি প্রয়োগ করে, যা প্রতিক্রিয়াটিকে পরিবর্তন বা রূপান্তর করতে পারে।
পলিসিগুলো রেসপন্স ভেরিয়েবল পরীক্ষা করতে পারে এবং তারপর সেই ভেরিয়েবলগুলোর বিষয়বস্তুর উপর ভিত্তি করে অনুরোধটি রূপান্তর বা প্রত্যাখ্যান করতে পারে। পলিসিগুলো উপযুক্ত ভেরিয়েবল সেট করার মাধ্যমে রেসপন্সকে রূপান্তর করে, যেমন রেসপন্স হেডারের সাথে সম্পর্কিত ভেরিয়েবলগুলো।
ফ্লো ভেরিয়েবল অ্যাক্সেস করার সাধারণ নীতিমালা
Edge বেশ কিছু পলিসি নির্ধারণ করে যা আপনি অনুরোধ এবং প্রতিক্রিয়ার ডেটা প্রক্রিয়া করতে ব্যবহার করতে পারেন। এই পলিসিগুলোর মধ্যে রয়েছে:
- AssignMessage পলিসি : একটি এপিআই প্রক্সি ফ্লো চলাকালীন HTTP অনুরোধ বা প্রতিক্রিয়া বার্তা তৈরি বা পরিবর্তন করে। এছাড়াও নতুন ফ্লো ভেরিয়েবল তৈরি ও তাতে ডেটা যুক্ত করে।
- ExtractVariables পলিসি : একটি কন্ডিশন স্টেটমেন্টে ব্যবহারের জন্য মেসেজ থেকে হেডার, URI পাথ, পেলোড এবং কোয়েরি প্যারামিটার সহ বিভিন্ন কন্টেন্ট এক্সট্র্যাক্ট করে। এরপর পলিসিটি মেসেজের কন্টেন্টের উপর একটি টেক্সট প্যাটার্ন প্রয়োগ করে এবং মিল খুঁজে পেলে একটি নির্দিষ্ট ভেরিয়েবল সেট করে।
- JSONtoXML পলিসি এবং XMLtoJSON পলিসি : মেসেজকে জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (JSON) থেকে এক্সটেনসিবল মার্কআপ ল্যাঙ্গুয়েজ (XML) ফরম্যাটে, অথবা এর বিপরীতক্রমে রূপান্তর করে।
- JavaCallout পলিসি , JavaScript পলিসি , PythonScript পলিসি , RegularExpressionProtection পলিসি : এই পলিসিগুলো আপনাকে রিকোয়েস্ট এবং রেসপন্স ডেটা ধারণকারী ফ্লো ভেরিয়েবল অ্যাক্সেস করার জন্য স্ক্রিপ্ট লিখতে দেয়।