অনুরোধ ও উত্তর ভেরিয়েবল

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

আপনি কোনও API প্রক্সিতে অনুরোধ করলে, API প্রক্সি যেভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে, আপনি নিম্নলিখিত তথ্যগুলির যেকোনও একটি বা সবকটি পাস করতে পারবেন:

  • অনুরোধের হেডার
  • কোয়েরি প্যারামিটার
  • ফর্ম ডেটা
  • XML বা JSON পেলোড
  • রিসোর্স URI

সাধারণত, কোনও অনুরোধের সব ডেটা ProxyEndpoint থেকে TargetEndpoint-এ অপরিবর্তিত অবস্থায় পাস করা হয়। তাই, TargetEndpoint যখন ব্যাকএন্ড সার্ভারে অনুরোধ করে, তখন মূল অনুরোধের সমস্ত তথ্য ব্যাকএন্ড পরিষেবায় পাস করা হয়।

ব্যাকএন্ড পরিষেবা থেকে Edge-এর পাওয়া উত্তরের ক্ষেত্রেও একই কথা প্রযোজ্য। সাধারণত, উত্তরের মাধ্যমে প্রাপ্ত সব ডেটা অপরিবর্তিত অবস্থায় সেই অ্যাপে পাঠানো হয় যেখান থেকে অনুরোধটি করা হয়েছে।

অনুরোধ করা ডেটা কীভাবে ব্যাকএন্ড সার্ভারে পাঠানো হয়?

নিচের ছবিতে API প্রক্সি সংজ্ঞা দেখানো হয়েছে:

HTTP ক্লায়েন্টের থেকে অনুরোধ প্রক্সি এন্ডপয়েন্টের মাধ্যমে ব্যাকএন্ডের টার্গেট এন্ডপয়েন্টে গিয়ে HTTP পরিষেবাতে পৌঁছায়। প্রক্সি এন্ডপয়েন্ট ও টার্গেট এন্ডপয়েন্টের উদাহরণ দেওয়া হয়েছে।

এই API প্রক্সির জন্য:

  • API প্রক্সি ভার্চুয়াল হোস্ট: "default"
  • ভার্চুয়াল হোস্টের মাধ্যমে সংজ্ঞায়িত ডোমেন: "http://myOrg-prod.apigee.net"
  • প্রক্সি বেস পাথ: "/v1/weather"
  • রাউট নিয়মের মাধ্যমে নির্দিষ্ট করা TargetEndpoint: "default"
  • টার্গেট URL: "http://weather.yahooapis.com"

ক্লায়েন্ট অ্যাপ নিম্নলিখিত curl কমান্ড ব্যবহার করে API প্রক্সিতে 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"

তারপরে TargetEndpoint, অনুরোধ থেকে পাওয়া তথ্য ব্যবহার করে ব্যাকএন্ড পরিষেবায় একটি অনুরোধ করে: অনুরোধ:

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

লক্ষ্য করুন, অনুরোধে উল্লেখ করা রিসোর্স ও কোয়েরি প্যারামিটারগুলি কীভাবে ব্যাকএন্ড সার্ভারে করা অনুরোধে অটোমেটিক অন্তর্ভুক্ত করা হয়েছে। TargetEndpoint-এর সংজ্ঞা থেকে, অনুরোধটি এই ফর্মের:

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

কোয়েরি প্যারামিটারের মতো, API প্রক্সি সার্ভারে আপনার পাঠানো অনুরোধে অন্তর্ভুক্ত যেকোনও হেডার বা ফর্ম প্যারামিটার ব্যাকএন্ড সার্ভারে পাস করা হয়। যেমন, আপনি নিচে উল্লেখ করা অনুরোধ করেছেন যার মধ্যে একটি হেডার আছে:

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-এ ফ্লো ভেরিয়েবলের মাধ্যমে অ্যাক্সেস করা যায়। আরও তথ্যের জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন।

API প্রক্সি থেকে অনুরোধ ও উত্তর সংক্রান্ত ডেটা অ্যাক্সেস করা

এমন অনেক সময় আসে যখন ব্যাকএন্ড সার্ভারে পাঠানোর আগে আপনাকে অনুরোধের ডেটা পরিবর্তন করতে হয়। যেমন:

  • অনুরোধ যাচাই করার জন্য Edge-এর ব্যবহার করা নিরাপত্তা সংক্রান্ত তথ্য সরাতে। ব্যাকএন্ড পরিষেবার জন্য সেই তথ্য প্রয়োজনীয় নয়।
  • ব্যাকএন্ড পরিষেবায় পাঠানো ডেটা যোগ করতে, যেমন ব্যবহারকারীদের ট্র্যাক করতে বা অ্যানালিটিক্স সংগ্রহ করতে।
  • অনুরোধের ডেটার উপর ভিত্তি করে শর্তসাপেক্ষে অনুরোধ প্রসেস করতে। যেমন, কোনও API প্রক্সিতে একাধিক TargetEndpoints থাকতে পারে। অনুরোধের মাধ্যমে ব্যবহৃত TargetEndpoint, অনুরোধ ডেটা দ্বারা নির্ধারিত হয়। তারপরে, ব্যাকএন্ড পরিষেবায় পাঠানোর আগে আপনি অনুরোধ থেকে সেই ডেটা সরিয়ে দেন।

উত্তরে থাকা ডেটার ক্ষেত্রেও একই কথা প্রযোজ্য। উত্তর প্রসেস করার অংশ হিসেবে, API প্রক্সি অনুরোধকারী অ্যাপকে উত্তর পাঠানোর আগে ডেটা পরিবর্তন করতে চাইতে পারে।

অ্যাক্সেস অনুরোধ মেসেজ

অনুরোধ মেসেজের অংশ অ্যাক্সেস ও পরিবর্তন করতে আপনি নীতি ব্যবহার করতে পারবেন। এইসব অংশের মধ্যে রয়েছে:

  • হেডার
  • কোয়েরি প্যারামিটার
  • ফর্ম প্যারামিটার
  • সোর্স IP অ্যাড্রেস
  • HTTP মেসেজ বডি

সাধারণ ফ্লোতে, অনুরোধ প্রসেস করা হয়ে গেলে, প্রক্সি রূপান্তরিত অনুরোধটি টার্গেটে পাঠায়।

নীতি অনুরোধের ভেরিয়েবল পরীক্ষা করতে পারে, তারপর সেইসব ভেরিয়েবলের কন্টেন্টের উপর ভিত্তি করে অনুরোধটি ট্রান্সফর্ম বা বাতিল করতে পারে। নীতি উপযুক্ত ভেরিয়েবল সেট করে অনুরোধকে ট্রান্সফর্ম করে, যেমন, অনুরোধের হেডার সম্পর্কিত ভেরিয়েবল।

উত্তরসূচক মেসেজ অ্যাক্সেস করা

উত্তরের মেসেজে প্রযোজ্য ভেরিয়েবল ব্যবহার করে, নীতি মেসেজ কম্পোনেন্ট অ্যাক্সেস করতে পারে যার মধ্যে হেডার, কোয়েরি প্যারামিটার ও ফর্ম প্যারামিটার, সোর্স IP অ্যাড্রেস, HTTP মেসেজ বডি ইত্যাদি অন্তর্ভুক্ত।

প্রক্সি একটি উত্তর মেসেজ পায়, তারপরে উত্তরের উপর মূল্যায়ন করা শর্তের ভিত্তিতে এটিতে একাধিক নীতি প্রয়োগ করে, যা উত্তরটিকে পরিবর্তন বা ট্রান্সফর্ম করতে পারে।

নীতি, উত্তরের ভেরিয়েবল পরীক্ষা করতে পারে, তারপর সেইসব ভেরিয়েবলের কন্টেন্টের উপর ভিত্তি করে অনুরোধ ট্রান্সফর্ম বা বাতিল করতে পারে। নীতি উপযুক্ত ভেরিয়েবল সেট করে উত্তরকে ট্রান্সফর্ম করে, যেমন, উত্তরের হেডার অনুযায়ী ভেরিয়েবল।

ফ্লো ভেরিয়েবল অ্যাক্সেস করার সাধারণ নীতি

অনুরোধ ও উত্তর সংক্রান্ত ডেটা প্রসেস করার জন্য Edge বিভিন্ন নীতি নির্ধারণ করে। এইসব নীতিতে অন্তর্ভুক্ত:

  • AssignMessage নীতি: API প্রক্সি ফ্লো চলাকালীন HTTP অনুরোধ বা উত্তর মেসেজ তৈরি বা পরিবর্তন করে। এছাড়াও, নতুন ফ্লো ভেরিয়েবেল তৈরি ও পপুলেট করে।
  • ExtractVariables নীতি: কন্ডিশন স্টেটমেন্টে ব্যবহারের জন্য মেসেজ থেকে কন্টেন্ট এক্সট্র্যাক্ট করে, যার মধ্যে হেডার, URI পাথ, পেলোড ও কোয়েরি প্যারামিটার অন্তর্ভুক্ত। তারপরে নীতিটি মেসেজ কন্টেন্টে টেক্সট প্যাটার্ন প্রয়োগ করে এবং কোনও মিল খুঁজে পেলে একটি নির্দিষ্ট ভেরিয়েবল সেট করে।
  • JSONtoXML নীতি ও XMLtoJSON নীতি: JavaScript Object Notation (JSON) থেকে এক্সটেনসিবল মার্ক-আপ ল্যাঙ্গুয়েজ (XML) ফর্ম্যাটে মেসেজ কনভার্ট করে অথবা এর বিপরীত প্রসেস করে।
  • JavaCallout নীতি, JavaScript নীতি, PythonScript নীতি, RegularExpressionProtection নীতি: এই নীতিগুলি আপনাকে অনুরোধ ও উত্তর ডেটা থাকা ফ্লো ভেরিয়েবল অ্যাক্সেস করার জন্য স্ক্রিপ্ট লিখতে দেয়।