নীতি রচনা ব্যবহার করে

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

এই বিষয়ে, আপনি শিখবেন কিভাবে পলিসি কম্পোজিশন ব্যবহার করে একটি ম্যাশআপ তৈরি করতে হয়। পলিসি কম্পোজিশন হল একটি Apigee প্রক্সি প্যাটার্ন যা আপনাকে নীতিগুলি ব্যবহার করে একাধিক ব্যাকএন্ড টার্গেট থেকে ফলাফল একত্রিত করতে দেয়।

নীতি রচনার একটি সাধারণ ওভারভিউয়ের জন্য, API প্রক্সি কুকবুক প্যাটার্নে "নীতি রচনার প্যাটার্ন" দেখুন।

ডাউনলোড করুন এবং নমুনা কোড চেষ্টা করুন

এই রান্নার বই উদাহরণ সম্পর্কে

এই কুকবুকের উদাহরণটি নীতি রচনা নামে একটি API প্রক্সি প্যাটার্নকে চিত্রিত করে। এই প্যাটার্নটি একাধিক ব্যাকএন্ড উত্স থেকে ডেটা ম্যাশ আপ করার এক উপায় (অন্যও আছে) সরবরাহ করে। আরও সাধারণভাবে, এই বিষয়টি দেখায় যে কীভাবে নীতিগুলিকে একত্রিত করা যায় এবং একটি পছন্দসই ফলাফল তৈরি করা যায়। এই প্যাটার্ন এবং অন্যান্য সম্পর্কিতগুলির একটি সাধারণ ওভারভিউয়ের জন্য, API প্রক্সি কুকবুক প্যাটার্ন দেখুন।

এখানে আলোচনা করা উদাহরণটি এই দুটি পৃথক পাবলিক API থেকে ডেটা ম্যাশ আপ করতে নীতি রচনা ব্যবহার করে:

  • Google জিওকোডিং API : এই API ঠিকানাগুলিকে (যেমন "1600 Amphitheatre Parkway, Mountain View, CA") ভৌগলিক স্থানাঙ্কে রূপান্তর করে (যেমন অক্ষাংশ 37.423021 এবং দ্রাঘিমাংশ -122.083739)।
  • গুগল এলিভেশন এপিআই এই এপিআই উচ্চতা ডেটার জন্য পৃথিবীর অবস্থান অনুসন্ধান করার জন্য একটি সহজ ইন্টারফেস প্রদান করে। এই উদাহরণে, জিওকোডিং API থেকে প্রত্যাবর্তিত স্থানাঙ্কগুলি এই API-তে ইনপুট হিসাবে ব্যবহার করা হবে।

অ্যাপ বিকাশকারীরা এই API প্রক্সিটিকে দুটি ক্যোয়ারী প্যারামিটার, একটি পোস্টাল কোড এবং একটি দেশের আইডি সহ কল ​​করবে:

$ curl "http://{myorg}-test.apigee.net/policy-mashup-cookbook?country=us&postalcode=08008"

প্রতিক্রিয়া হল একটি JSON অবজেক্ট যা সরবরাহকৃত পোস্টাল কোড এলাকার কেন্দ্রের জন্য জিওকোডেড অবস্থান (অক্ষাংশ/দ্রাঘিমাংশ) অন্তর্ভুক্ত করে এবং সেই জিওকোডেড অবস্থানের উচ্চতার সাথে মিলিত হয়।

{  
   "ElevationResponse":{  
      "status":"OK",
      "result":{  
         "location":{  
            "lat":"39.7500713",
            "lng":"-74.1357407"
         },
         "elevation":"0.5045232",
         "resolution":"76.3516159"
      }
   }
}

আপনি শুরু করার আগে

আপনি যদি নীতি রচনা প্যাটার্নের একটি সংক্ষিপ্ত ওভারভিউ পড়তে চান, তাহলে API প্রক্সি কুকবুক প্যাটার্নে "পলিসি কম্পোজিশন প্যাটার্ন" দেখুন।

আপনি এই রান্নার বইয়ের উদাহরণটি অন্বেষণ করার আগে, আপনাকে এই মৌলিক ধারণাগুলির সাথেও পরিচিত হতে হবে:

  • নীতিগুলি কী এবং কীভাবে সেগুলি প্রক্সিগুলিতে সংযুক্ত করা যায়৷ নীতিগুলির একটি ভাল ভূমিকার জন্য, দেখুন একটি নীতি কী? .
  • একটি API প্রক্সি প্রবাহের গঠন, যেমনটি ফ্লো কনফিগারিং -এ ব্যাখ্যা করা হয়েছে। ফ্লো আপনাকে একটি API প্রক্সি দ্বারা নীতি নির্বাহ করা হয় সেই ক্রমটি নির্দিষ্ট করতে দেয়৷ এই উদাহরণে, বেশ কয়েকটি নীতি তৈরি করা হয়েছে এবং API প্রক্সির প্রবাহে যোগ করা হয়েছে।
  • কিভাবে একটি API প্রক্সি প্রকল্প আপনার ফাইল সিস্টেমে সংগঠিত হয়, যেমন API প্রক্সি কনফিগারেশন রেফারেন্সে ব্যাখ্যা করা হয়েছে। এই কুকবুক বিষয় ক্লাউড-ভিত্তিক উন্নয়নের বিপরীতে স্থানীয় উন্নয়ন (ফাইল সিস্টেম-ভিত্তিক) প্রদর্শন করে যেখানে আপনি API প্রক্সি বিকাশ করতে ব্যবস্থাপনা UI ব্যবহার করতে পারেন।
  • API কী যাচাইকরণের ব্যবহার। এটি অ্যাপ-ভিত্তিক নিরাপত্তার সহজতম ফর্ম যা আপনি একটি API-এর জন্য কনফিগার করতে পারেন। আরও তথ্যের জন্য API কীগুলি দেখুন। আপনি API কী টিউটোরিয়ালের প্রয়োজন করে একটি API সুরক্ষিত করার মাধ্যমেও চলতে পারেন।
  • এক্সএমএল-এর একটি কাজের জ্ঞান। এই উদাহরণে, আমরা ফাইল সিস্টেমে থাকা XML ফাইলগুলির সাথে API প্রক্সি এবং এর নীতিগুলি তৈরি করি৷

আপনি যদি নমুনা কোডটি ডাউনলোড করে থাকেন তবে আপনি ম্যাশআপ-পলিসি-কুকবুক নমুনা ফোল্ডারে এই বিষয়ে আলোচনা করা সমস্ত ফাইল সনাক্ত করতে পারেন। নিম্নলিখিত বিভাগে নমুনা কোড বিশদভাবে আলোচনা.

স্রোতের সাথে যাচ্ছে

নীতিগুলিতে যাওয়ার আগে, আমাদের উদাহরণ API প্রক্সির মূল প্রবাহটি একবার দেখে নেওয়া যাক৷ নীচে দেখানো ফ্লো XML, এই প্রক্সি, এটি যে নীতিগুলি ব্যবহার করে এবং সেই নীতিগুলি কোথায় বলা হয় সে সম্পর্কে আমাদের অনেক কিছু বলে৷

নমুনা ডাউনলোডে, আপনি এই XML ফাইলটি doc-samples/policy-mashup-cookbook/apiproxy/proxies/default.xml এ খুঁজে পেতে পারেন।

<ProxyEndpoint name="default">
  <Flows>
    <Flow name="default">
      <Request>
            <!-- Generate request message for the Google Geocoding API -->
            <Step><Name>GenerateGeocodingRequest</Name></Step>
            <!-- Call the Google Geocoding API -->
            <Step><Name>ExecuteGeocodingRequest</Name></Step>
            <!-- Parse the response and set variables -->
            <Step><Name>ParseGeocodingResponse</Name></Step>
            <!-- Generate request message for the Google Elevation API -->
            <Step><Name>AssignElevationParameters</Name></Step>
      </Request>
      <Response>
            <!-- Parse the response message from the Elevation API -->
            <Step><Name>ParseElevationResponse</Name></Step>
            <!-- Generate the final JSON-formatted response with JavaScript -->
            <Step><Name>GenerateResponse</Name></Step>
      </Response>
    </Flow>
  </Flows>

  <HTTPProxyConnection>
    <!-- Add a base path to the ProxyEndpoint for URI pattern matching-->
    <BasePath>/policy-mashup-cookbook</BasePath>
    <!-- Listen on both HTTP and HTTPS endpoints -->
    <VirtualHost>default</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  <RouteRule name="default">
    <!-- Connect ProxyEndpoint to named TargetEndpoint under /targets -->
    <TargetEndpoint>default</TargetEndpoint>
  </RouteRule>
</ProxyEndpoint>

এখানে প্রবাহের উপাদানগুলির একটি সারাংশ রয়েছে৷

  • <অনুরোধ> - <অনুরোধ> উপাদানটি বেশ কয়েকটি <পদক্ষেপ> উপাদান নিয়ে গঠিত। প্রতিটি ধাপে একটি নীতি বলা হয় যা আমরা এই বিষয়ের বাকি অংশে তৈরি করব। এই নীতিগুলি একটি অনুরোধ বার্তা তৈরি, এটি পাঠানো এবং প্রতিক্রিয়া পার্স করার সাথে সম্পর্কিত৷ এই বিষয়ের শেষে, আপনি এই প্রতিটি নীতির ভূমিকা বুঝতে পারবেন।
  • <প্রতিক্রিয়া> - <প্রতিক্রিয়া> উপাদানটিতে <পদক্ষেপ>ও রয়েছে। এই পদক্ষেপগুলি এমন নীতিগুলিকেও কল করে যেগুলি লক্ষ্য এন্ডপয়েন্ট (Google Elevation API) থেকে চূড়ান্ত প্রতিক্রিয়া প্রক্রিয়াকরণের জন্য দায়ী৷
  • <HttpProxyConnection> - এই উপাদানটি এই API প্রক্সির সাথে অ্যাপগুলি কীভাবে সংযোগ করবে সে সম্পর্কে বিস্তারিত উল্লেখ করে, যার মধ্যে <BasePath>ও রয়েছে, যা নির্দিষ্ট করে কিভাবে এই API কে কল করা হবে।
  • <RouteRule> - এই উপাদানটি নির্দিষ্ট করে যে অন্তর্মুখী অনুরোধ বার্তাগুলি প্রক্রিয়া করার পরপরই কী ঘটবে৷ এই ক্ষেত্রে, TargetEndpoint বলা হয়। আমরা এই বিষয়ে পরে এই গুরুত্বপূর্ণ পদক্ষেপ সম্পর্কে আরও আলোচনা করব।

নীতিমালা তৈরি করা

নিম্নলিখিত বিভাগগুলি এই নীতি রচনার উদাহরণ তৈরি করে এমন প্রতিটি নীতি নিয়ে আলোচনা করে৷

প্রথম AssignMessage নীতি তৈরি করুন

প্রথম AssignMessage নীতি, নীচে তালিকাভুক্ত, একটি অনুরোধ বার্তা তৈরি করে যা Google জিওকোডিং পরিষেবাতে পাঠানো হবে৷

আসুন নীতি কোড দিয়ে শুরু করি, এবং তারপরে আমরা এর উপাদানগুলিকে আরও বিশদে ব্যাখ্যা করব। নমুনা ডাউনলোডে, আপনি এই XML ফাইলটি doc-samples/policy-mashup-cookbook/apiproxy/policies/GenerateGeocodingRequest.xml এ খুঁজে পেতে পারেন।

<AssignMessage name="GenerateGeocodingRequest">
  <AssignTo createNew="true" type="request">GeocodingRequest</AssignTo>
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.queryparam.postalcode}</QueryParam>
      <QueryParam name="region">{request.queryparam.country}</QueryParam>
      <QueryParam name="sensor">false</QueryParam>
    </QueryParams>
    <Verb>GET</Verb>
  </Set>
  <!-- Set variables for use in the final response -->
  <AssignVariable>
    <Name>PostalCode</Name>
    <Ref>request.queryparam.postalcode</Ref>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
  </AssignVariable>
</AssignMessage>

এখানে এই নীতির উপাদানগুলির একটি সংক্ষিপ্ত বিবরণ রয়েছে৷ আপনি বার্তা বরাদ্দ নীতিতে এই নীতি সম্পর্কে আরও পড়তে পারেন।

  • <AssignMessage name> - এই নীতিটিকে একটি নাম দেয়। যখন নীতিটি একটি প্রবাহে উল্লেখ করা হয় তখন নামটি ব্যবহার করা হয়।
  • <AssignTo> - GeocodingRequest নামে একটি নামযুক্ত ভেরিয়েবল তৈরি করে। এই ভেরিয়েবলটি রিকোয়েস্ট অবজেক্টকে এনক্যাপসুলেট করে যা ServiceCallout পলিসি দ্বারা ব্যাকএন্ডে পাঠানো হবে।
  • <QueryParams> - ব্যাকএন্ড API কলের জন্য প্রয়োজনীয় ক্যোয়ারী প্যারামিটার সেট করে। এই ক্ষেত্রে, জিওকোডিং API-এর লোকেশন জানতে হবে, যা একটি পোস্টাল কোড এবং একটি দেশের আইডি দিয়ে প্রকাশ করা হয়। অ্যাপ ব্যবহারকারী এই তথ্য সরবরাহ করে, এবং আমরা কেবল এটি এখানে বের করি। sensor প্যারাম এপিআই দ্বারা প্রয়োজনীয়, এবং হয় সত্য বা মিথ্যা, এবং আমরা এখানে এটিকে মিথ্যাতে হার্ডকোড করি।
  • <ক্রিয়া > - এই ক্ষেত্রে, আমরা API এ একটি সহজ GET অনুরোধ করছি।
  • <অ্যাসাইন ভ্যারিয়েবল> - এই ভেরিয়েবলগুলি আমরা API-তে যে মানগুলি প্রেরণ করছি তা সংরক্ষণ করে। এই উদাহরণে, ভেরিয়েবলগুলি পরে ক্লায়েন্টের কাছে ফিরে আসা প্রতিক্রিয়াতে অ্যাক্সেস করা হবে।

ServiceCallout দিয়ে অনুরোধ পাঠান

পলিসি কম্পোজিশন সিকোয়েন্সের পরবর্তী ধাপ হল একটি ServiceCallout নীতি তৈরি করা। সার্ভিসকলআউট নীতি, নীচে তালিকাভুক্ত, আমাদের পূর্ববর্তী AssignMessage নীতিতে তৈরি করা অনুরোধ অবজেক্টটি Google জিওকোডিং পরিষেবাতে পাঠায় এবং ফলাফলটিকে GeocodingResponse নামক একটি ভেরিয়েবলে সংরক্ষণ করে৷

আগের মতই, প্রথমে কোডটি দেখে নেওয়া যাক। একটি বিস্তারিত ব্যাখ্যা অনুসরণ করে. আপনি পরিষেবা কলআউট নীতিতে এই নীতি সম্পর্কে আরও পড়তে পারেন। নমুনা ডাউনলোডে, আপনি এই XML ফাইলটি doc-samples/policy-mashup-cookbook/apiproxy/policies/ExecuteGeocodingRequest.xml ফাইলে খুঁজে পেতে পারেন।

<ServiceCallout name="ExecuteGeocodingRequest">
  <Request variable="GeocodingRequest"/>
  <Response>GeocodingResponse</Response>
  <HTTPTargetConnection>
    <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
  </HTTPTargetConnection>
</ServiceCallout>

এখানে এই নীতির উপাদানগুলির একটি সংক্ষিপ্ত বিবরণ রয়েছে৷

  • <সার্ভিসকলআউট> - পূর্ববর্তী নীতির মতো, এটির একটি নাম রয়েছে।
  • <রিকোয়েস্ট ভেরিয়েবল> - এটি সেই ভেরিয়েবল যা AssignMessage নীতিতে তৈরি করা হয়েছিল। এটি ব্যাকএন্ড এপিআই-এ যাওয়ার অনুরোধকে এনক্যাপসুলেট করে।
  • <প্রতিক্রিয়া> - এই উপাদানটি একটি ভেরিয়েবলের নাম দেয় যেখানে প্রতিক্রিয়া সংরক্ষণ করা হয়। যেমন আপনি দেখতে পাবেন, এই ভেরিয়েবলটি পরে এক্সট্রাক্ট ভেরিয়েবল নীতি দ্বারা অ্যাক্সেস করা হবে।
  • <HTTPTargetConnection> - ব্যাকএন্ড API এর টার্গেট URL নির্দিষ্ট করে। এই ক্ষেত্রে, আমরা নির্দিষ্ট করি যে API একটি JSON প্রতিক্রিয়া প্রদান করে।

এখন আমাদের কাছে দুটি নীতি রয়েছে, একটি যা ব্যাকএন্ড API (গুগলের জিওকোডিং API) ব্যবহার করার জন্য প্রয়োজনীয় অনুরোধের তথ্য নির্দিষ্ট করে এবং দ্বিতীয়টি যা আসলে ব্যাকএন্ড API-কে অনুরোধ পাঠায়। পরবর্তী, আমরা প্রতিক্রিয়া পরিচালনা করব।

ExtractVariables দিয়ে প্রতিক্রিয়া পার্স করুন

ExtractVariables নীতি একটি ServiceCallout নীতি দ্বারা প্রাপ্ত প্রতিক্রিয়া বার্তা থেকে বিষয়বস্তু পার্স করার জন্য একটি সহজ পদ্ধতি প্রদান করে। ExtractVariables ব্যবহার করা যেতে পারে JSON বা XML পার্স করতে, অথবা এটি URI পাথ, HTTP হেডার, ক্যোয়ারী প্যারামিটার এবং ফর্ম প্যারামিটার থেকে সামগ্রী বের করতে ব্যবহার করা যেতে পারে।

এখানে ExtractVariables নীতির একটি তালিকা রয়েছে। আপনি এক্সট্র্যাক্ট ভেরিয়েবল নীতিতে এই নীতি সম্পর্কে আরও পড়তে পারেন। নমুনা ডাউনলোডে, আপনি এই XML ফাইলটি doc-samples/policy-mashup-cookbook/apiproxy/policies/ParseGeocodingResponse.xml ফাইলে খুঁজে পেতে পারেন।

<ExtractVariables name="ParseGeocodingResponse">
  <Source>GeocodingResponse</Source>
  <VariablePrefix>geocoderesponse</VariablePrefix>
  <JSONPayload>
    <Variable name="latitude">
       <JSONPath>$.results[0].geometry.location.lat</JSONPath>
    </Variable>
    <Variable name="longitude">
       <JSONPath>$.results[0].geometry.location.lng</JSONPath>
    </Variable>
  </JSONPayload>
</ExtractVariables>

ExtractVariable নীতির মূল উপাদান হল:

  • <ExtractVariables name> - আবার, নীতির নামটি পলিসি উল্লেখ করতে ব্যবহৃত হয় যখন এটি একটি প্রবাহে ব্যবহৃত হয়।
  • <উৎস > - সার্ভিসকলআউট নীতিতে আমরা যে প্রতিক্রিয়া ভেরিয়েবল তৈরি করেছি তা নির্দিষ্ট করে। এটি সেই পরিবর্তনশীল যা থেকে এই নীতি ডেটা বের করে।
  • <VariablePrefix> - পরিবর্তনশীল উপসর্গ এই নীতিতে তৈরি অন্যান্য ভেরিয়েবলের জন্য একটি নামস্থান নির্দিষ্ট করে। উপসর্গ যে কোনো নাম হতে পারে, এজ এর পূর্বনির্ধারিত ভেরিয়েবল দ্বারা সংজ্ঞায়িত সংরক্ষিত নাম ব্যতীত।
  • <JSONPayload> - এই উপাদানটি আমাদের আগ্রহের প্রতিক্রিয়া ডেটা পুনরুদ্ধার করে এবং নামযুক্ত ভেরিয়েবলে রাখে। আসলে, জিওকোডিং API অক্ষাংশ এবং দ্রাঘিমাংশের চেয়ে অনেক বেশি তথ্য প্রদান করে। যাইহোক, এই নমুনার জন্য আমাদের প্রয়োজন একমাত্র মান। আপনি API এর ডকুমেন্টেশনে জিওকোডিং API দ্বারা ফিরে আসা JSON-এর সম্পূর্ণ রেন্ডারিং দেখতে পারেন। geometry.location.lat এবং geometry.location.lng এর মানগুলি প্রত্যাবর্তিত JSON অবজেক্টের অনেকগুলি ক্ষেত্রের মধ্যে দুটি।

এটি সুস্পষ্ট নাও হতে পারে, তবে এটি দেখা গুরুত্বপূর্ণ যে ExtractVariables দুটি ভেরিয়েবল তৈরি করে যার নামগুলি ভেরিয়েবল উপসর্গ (geocoderesponse) এবং নীতিতে নির্দিষ্ট করা প্রকৃত পরিবর্তনশীল নামগুলি নিয়ে গঠিত৷ এই ভেরিয়েবলগুলি API প্রক্সিতে সংরক্ষণ করা হয় এবং প্রক্সি প্রবাহের মধ্যে অন্যান্য নীতিতে উপলব্ধ হবে, যেমন আপনি দেখতে পাবেন। ভেরিয়েবলগুলি হল:

  • geocoderesponse.latitude
  • geocoderesponse.longitude

এখন বেশিরভাগ কাজ শেষ। আমরা তিনটি নীতির একটি সংমিশ্রণ তৈরি করেছি যা একটি অনুরোধ তৈরি করে, একটি ব্যাকএন্ড API কল করে এবং ফিরে আসা JSON ডেটা পার্স করে৷ চূড়ান্ত ধাপে, আমরা প্রবাহের এই অংশ থেকে ডেটা অন্য একটি AssignMessage নীতিতে ফিড করব, দ্বিতীয় ব্যাকএন্ড API (Google Elevation API) কল করব এবং অ্যাপ ডেভেলপারকে আমাদের ম্যাশ করা ডেটা ফেরত দেব।

AssignMessage দিয়ে দ্বিতীয় অনুরোধ তৈরি করুন

নিম্নলিখিত AssignMessage নীতিতে আমরা সঞ্চয় করা প্রথম ব্যাকএন্ড (গুগল জিওকোডিং) থেকে ফেরত আসা ভেরিয়েবল ব্যবহার করে এবং সেগুলিকে দ্বিতীয় API (গুগল এলিভেশন) এর জন্য নির্ধারিত একটি অনুরোধে প্লাগ করে। যেমন আগে উল্লেখ করা হয়েছে, এই ভেরিয়েবলগুলি হল geocoderesponse.latitude এবং geocoderesponse.longitude৷

নমুনা ডাউনলোডে, আপনি এই XML ফাইলটি doc-samples/policy-mashup-cookbook/apiproxy/policies/AssignElevationParameters.xml ফাইলে খুঁজে পেতে পারেন।

<AssignMessage name="AssignElevationParameters">
<Remove>
    <QueryParams>
      <QueryParam name="country"/>
      <QueryParam name="postalcode"/>
    </QueryParams>
  </Remove>
  <Set>
    <QueryParams>
      <QueryParam name="locations">{geocoderesponse.latitude},{geocoderesponse.longitude}</QueryParam>
      <QueryParam name="sensor">false</QueryParam>
    </QueryParams>
  </Set>
</AssignMessage>

আপনি যদি Google Elevation API পরীক্ষা করেন, আপনি দেখতে পাবেন যে এটি দুটি ক্যোয়ারী প্যারামিটার নেয়। প্রথমটিকে locations বলা হয় এবং এর মান হল অক্ষাংশ এবং দ্রাঘিমাংশ (কমা দ্বারা পৃথক করা মান)। অন্য প্যারাম হল sensor , যা প্রয়োজন এবং সত্য বা মিথ্যা হতে হবে। এই মুহুর্তে লক্ষ্য করার সবচেয়ে গুরুত্বপূর্ণ বিষয় হল যে আমরা এখানে যে অনুরোধ বার্তা তৈরি করি তার জন্য কোনো ServiceCallout প্রয়োজন হয় না। আমাদের এই মুহুর্তে একটি ServiceCallout থেকে দ্বিতীয় API কল করার দরকার নেই কারণ আমরা প্রক্সির TargetEndpoint থেকে ব্যাকএন্ড API কল করতে পারি। আপনি যদি এটি সম্পর্কে চিন্তা করেন, তাহলে আমাদের কাছে Google Elevations API কল করার জন্য প্রয়োজনীয় সমস্ত ডেটা রয়েছে এই API প্রক্সির জন্য কনফিগার করা RouteRule অনুসরণ করে TargetEndpoint-এ। TargetEndpoint দূরবর্তী API এর সাথে সংযোগ পরিচালনা করে। (মনে রাখবেন যে এলিভেশন এপিআই-এর URL টার্গেটএন্ডপয়েন্টের জন্য HTTP সংযোগে সংজ্ঞায়িত করা হয়েছে। যদি আপনি আরও জানতে চান তাহলে উচ্চতা API ডকুমেন্টেশন। আমরা পূর্বে যে ক্যোয়ারীপ্যারামগুলি সংরক্ষণ করেছি, country এবং postalcode , এখন আর প্রয়োজন নেই, তাই আমরা সেগুলিকে এখানে সরিয়ে দিই। .

সংক্ষিপ্ত বিরতি: প্রবাহে ফিরে যান

এই মুহুর্তে, আপনি ভাবতে পারেন কেন আমরা অন্য সার্ভিসকলআউট নীতি তৈরি করছি না। সব পরে, আমরা আরেকটি বার্তা তৈরি. কিভাবে সেই বার্তাটি লক্ষ্যে পাঠানো হয়, Google Elevation API? উত্তরটি প্রবাহের <RouteRule> উপাদানে রয়েছে। <RouteRule> প্রবাহের <Request> অংশটি কার্যকর হওয়ার পরে অবশিষ্ট অনুরোধ বার্তাগুলির সাথে কী করতে হবে তা নির্দিষ্ট করে। এই <RouteRule> দ্বারা নির্দিষ্ট করা TargetEndpoint API প্রক্সিকে http://maps.googleapis.com/maps/api/elevation/xml এ বার্তা প্রদান করতে বলে।

আপনি যদি নমুনা API প্রক্সি ডাউনলোড করেন, তাহলে আপনি doc-samples/policy-mashup-cookbook/apiproxy/targets/default.xml ফাইলটিতে TargetProxy XML খুঁজে পেতে পারেন।

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <!-- This is where we define the target. For this sample we just use a simple URL. -->
    <URL>http://maps.googleapis.com/maps/api/elevation/xml</URL>
  </HTTPTargetConnection>
</TargetEndpoint>

এখন, আমাদের শুধু Google Elevation API থেকে প্রতিক্রিয়া প্রক্রিয়া করতে হবে এবং আমরা সম্পন্ন করেছি।

XML থেকে JSON-এ প্রতিক্রিয়া রূপান্তর করুন

এই উদাহরণে, Google Elevation API থেকে প্রতিক্রিয়া XML হিসাবে ফেরত দেওয়া হয়। "অতিরিক্ত ক্রেডিট" এর জন্য, আসুন XML থেকে JSON-এ প্রতিক্রিয়া রূপান্তর করতে আমাদের কম্পোজিটে আরও একটি নীতি যোগ করি৷

এই উদাহরণটি রূপান্তর করার জন্য জাভাস্ক্রিপ্ট কোড সম্বলিত একটি রিসোর্স ফাইল সহ GenerateResponse নামে জাভাস্ক্রিপ্ট নীতি ব্যবহার করে। নিচে জেনারেট রেসপন্স নীতির সংজ্ঞা দেখানো হল:

<Javascript name="GenerateResponse" timeout="10000">
  <ResourceURL>jsc://GenerateResponse.js</ResourceURL>
</Javascript>

GenerateResponse.js রিসোর্স ফাইলে রূপান্তর সম্পাদন করতে ব্যবহৃত জাভাস্ক্রিপ্ট অন্তর্ভুক্ত রয়েছে। আপনি doc-samples/policy-mashup-cookbook/apiproxy/resources/JSC/GenerateResponse.js ফাইলটিতে সেই কোডটি দেখতে পারেন।

Apigee XML কে JSON-এ রূপান্তর করার জন্য XMLToJSON, একটি আউট-অফ-দ্য-বক্স নীতিও প্রদান করে। পরিবর্তে নীচে দেখানো xmltojson নীতি ব্যবহার করতে আপনি ProxyEndpoint সম্পাদনা করতে পারেন।

<XMLToJSON name="xmltojson">
  <Options>
  </Options>
  <OutputVariable>response</OutputVariable>
  <Source>response</Source>
</XMLToJSON>

উদাহরণ পরীক্ষা করা হচ্ছে

আপনি যদি ইতিমধ্যে এটি না করে থাকেন, তাহলে নীতি-ম্যাশআপ-কুকবুক নমুনা ডাউনলোড, স্থাপন এবং চালানোর চেষ্টা করুন, যা আপনি Apigee Edge নমুনা সংগ্রহস্থল GitHub-এর ডক-নমুনা ফোল্ডারে খুঁজে পেতে পারেন। নীতি-ম্যাশআপ-কুকবুক ফোল্ডারে README ফাইলের নির্দেশাবলী অনুসরণ করুন। অথবা, এখানে সংক্ষিপ্ত নির্দেশাবলী অনুসরণ করুন: নমুনা API প্রক্সি ব্যবহার করে

সংক্ষেপে, আপনি নিম্নরূপ যৌগিক API কল করতে পারেন। আপনার প্রতিষ্ঠানের নামের সাথে আপনার {myorg} প্রতিস্থাপন করুন:

$ curl "http://{myorg}-test.apigee.net/policy-mashup-cookbook?country=us&postalcode=08008"

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

{  
   "country":"us",
   "postalcode":"08008",
   "elevation":{  
      "meters":0.5045232,
      "feet":1.6552599030345978
   },
   "location":{  
      "latitude":39.75007129999999,
      "longitude":-74.1357407
   }
}

সারাংশ

একাধিক ব্যাকএন্ড উৎস থেকে ডেটার একটি ম্যাশআপ তৈরি করতে পলিসি কম্পোজিশন প্যাটার্ন কীভাবে ব্যবহার করতে হয় তা এই কুকবুকের বিষয় ব্যাখ্যা করেছে। পলিসি কম্পোজিশন হল একটি সাধারণ প্যাটার্ন যা API প্রক্সি ডেভেলপমেন্টে আপনার API-তে সৃজনশীল কার্যকারিতা যোগ করার জন্য ব্যবহৃত হয়।