আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
কি
ExtractVariables নীতি একটি অনুরোধ বা প্রতিক্রিয়া থেকে কন্টেন্ট বের করে এবং সেই কন্টেন্টে একটি ভেরিয়েবলের মান সেট করে। আপনি হেডার, URI পাথ, JSON/XML পেলোড, ফর্ম প্যারামিটার এবং কোয়েরি প্যারামিটার সহ বার্তার যেকোনো অংশ বের করতে পারেন। নীতিটি বার্তার কন্টেন্টে একটি টেক্সট প্যাটার্ন প্রয়োগ করে কাজ করে এবং একটি মিল খুঁজে পাওয়ার পরে, নির্দিষ্ট বার্তার কন্টেন্টের সাথে একটি ভেরিয়েবল সেট করে।
যদিও আপনি প্রায়শই এই নীতিটি একটি অনুরোধ বা প্রতিক্রিয়া বার্তা থেকে তথ্য বের করার জন্য ব্যবহার করেন, আপনি এটি অন্যান্য উৎস থেকে তথ্য বের করার জন্যও ব্যবহার করতে পারেন, যার মধ্যে AccessEntity নীতি , XML অবজেক্ট বা JSON অবজেক্ট দ্বারা তৈরি সত্তা অন্তর্ভুক্ত রয়েছে।
নির্দিষ্ট বার্তার বিষয়বস্তু বের করার পরে, আপনি অনুরোধ এবং প্রতিক্রিয়া প্রক্রিয়াকরণের অংশ হিসাবে অন্যান্য নীতিতে ভেরিয়েবলটি উল্লেখ করতে পারেন।
ভিডিও
ExtractVariables নীতি সম্পর্কে আরও জানতে নিম্নলিখিত ভিডিওগুলি দেখুন।
| ভিডিও | বিবরণ |
|---|---|
| XML পেলোড থেকে ভেরিয়েবল বের করুন | এক্সট্র্যাক্ট ভেরিয়েবল নীতি ব্যবহার করে একটি XML পেলোড থেকে ভেরিয়েবল বের করুন। |
| JSON পেলোড থেকে ভেরিয়েবল বের করুন | এক্সট্র্যাক্ট ভেরিয়েবল নীতি ব্যবহার করে একটি JSON পেলোড থেকে ভেরিয়েবল বের করুন। |
| প্যারামিটার থেকে ভেরিয়েবল বের করুন | কোয়েরি, হেডার, ফর্ম, অথবা URI প্যারামিটারের মতো প্যারামিটার থেকে ভেরিয়েবল বের করুন। |
| বহু-মান পরামিতি থেকে ভেরিয়েবল বের করুন | বহু-মান পরামিতি থেকে ভেরিয়েবল বের করুন। |
| কোয়েরি প্যারামিটার থেকে ভেরিয়েবল বের করুন (ক্লাসিক এজ) | ক্লাসিক এজ UI ব্যবহার করে একটি কোয়েরি প্যারামিটার থেকে ভেরিয়েবল বের করুন। |
| XML অথবা JSON পেলোড (ক্লাসিক এজ) থেকে ভেরিয়েবল বের করুন | ক্লাসিক এজ UI ব্যবহার করে একটি XML বা JSON পেলোড থেকে ভেরিয়েবল বের করুন। |
নমুনা
এই নীতি কোড নমুনাগুলি নিম্নলিখিত ধরণের শিল্পকর্ম থেকে ভেরিয়েবলগুলি কীভাবে বের করতে হয় তা ব্যাখ্যা করে:
গিটহাব
এই লিঙ্কগুলি কার্যকরী API প্রক্সি নমুনাগুলির দিকে নির্দেশ করে যা আপনি Edge-এ স্থাপন এবং চালাতে পারেন। এগুলি ExtractVariables ব্যবহার করে এবং GitHub-এ Apigee-এর api-platform-samples সংগ্রহস্থলে অবস্থিত। README গুলি ব্যাখ্যা করে যে প্রতিটি ক্ষেত্রে ExtractVariables কীভাবে ব্যবহার করা হয় এবং প্রতিটি নমুনা কীভাবে স্থাপন এবং চালাতে হয়।
- ভেরিয়েবলের নমুনা বের করুন এবং বরাদ্দ করুন (JSON এবং XML বার্তা থেকে ডেটা বের করুন)
- সত্তার নমুনা অ্যাক্সেস করুন
- পৃষ্ঠাঙ্কন এবং ক্যাশিং নমুনা
- একটি টার্গেট URL নমুনা পুনরায় রুট করুন
- নীতি রচনা ম্যাশআপ নমুনা
ইউআরআই
<ExtractVariables name="ExtractVariables-1">
<DisplayName>Extract a portion of the url path</DisplayName>
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/accounts/{id}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables> উপরের নমুনা নীতি কোডটি বিবেচনা করুন। <URIPath> উপাদানটি ExtractVariables নীতিকে URI পাথ থেকে তথ্য বের করতে বলে। <Pattern> উপাদানটি URI পাথে প্রয়োগ করার জন্য প্যাটার্নটি নির্দিষ্ট করে। প্যাটার্নটিকে একটি সাধারণ টেমপ্লেট হিসাবে বিবেচনা করা হয়, যেখানে কোঁকড়া বন্ধনীগুলি URI পাথের বিভিন্ন অংশকে নির্দেশ করে।
সেট করা ভ্যারিয়েবলের নাম <VariablePrefix> এলিমেন্টে উল্লেখিত মান এবং <Pattern> এলিমেন্টে কোঁকড়া বন্ধনী {} এর মধ্যে থাকা মান দ্বারা নির্ধারিত হয়। দুটি ভ্যারিয়েবল একটি মধ্যবর্তী বিন্দু দ্বারা সংযুক্ত থাকে, যার ফলে urirequest.id এর একটি ভ্যারিয়েবল নাম তৈরি হয়। যদি কোন <VariablePrefix> এলিমেন্ট না থাকে, তাহলে ভ্যারিয়েবলের নামটি কেবল কোঁকড়া বন্ধনীতে আবদ্ধ মান।
উপরের নমুনা নীতি কোডটি নিম্নলিখিত আগত অনুরোধের সাথে কাজ করে তা বিবেচনা করুন:
GET http://org1-test.apigee.net/svc1/accounts/12797282
ধরুন API প্রক্সির বেসপাথ হল /svc1 । যখন Apigee Edge এই ইনকামিং রিকোয়েস্টে উপরের ExtractVariables পলিসি কোড প্রয়োগ করে, তখন এটি urirequest.id ভেরিয়েবলটিকে 12797282 এ সেট করে। Apigee Edge পলিসিটি কার্যকর করার পর, প্রসেসিং ফ্লোতে পরবর্তী পলিসি বা কোড urirequest.id নামক ভ্যারিয়েবলটিকে রেফার করতে পারে যাতে স্ট্রিং মান 12797282 পাওয়া যায়।
উদাহরণস্বরূপ, নিম্নলিখিত AssignMessage নীতিটি একটি নতুন অনুরোধ বার্তার পেলোডে সেই ভেরিয়েবলের মান এম্বেড করে:
<AssignMessage async="false" continueOnError="false" enabled="true" name="AssignPayload"> <DisplayName>AssignPayload</DisplayName> <Set> <Payload contentType="text/xml"> <IdExtractedFromURI>{urirequest.id}</IdExtractedFromURI> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">newRequest</AssignTo> </AssignMessage>
কোয়েরি প্যারামিটার
<ExtractVariables name="ExtractVariables-2">
<DisplayName>Extract a value from a query parameter</DisplayName>
<Source>request</Source>
<QueryParam name="code">
<Pattern ignoreCase="true">DBN{dbncode}</Pattern>
</QueryParam>
<VariablePrefix>queryinfo</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>উপরের নমুনা নীতি কোডটি নিম্নলিখিত আগত অনুরোধের সাথে কাজ করে তা বিবেচনা করুন:
GET http://org1-test.apigee.net/accounts/12797282?code=DBN88271
যখন Apigee Edge এই ইনকামিং রিকোয়েস্টে উপরের ExtractVariables পলিসি কোডটি প্রয়োগ করে, তখন এটি queryinfo.dbncode ভেরিয়েবলটিকে 88271 এ সেট করে। Apigee Edge পলিসিটি কার্যকর করার পর, প্রক্রিয়াকরণ প্রবাহে পরবর্তী পলিসি বা কোড queryinfo.dbncode নামক ভ্যারিয়েবলটিকে উল্লেখ করে 88271 স্ট্রিং মান পেতে পারে।
আপনি এখন আপনার প্রক্সিতে queryinfo.dbncode ভেরিয়েবলটি অ্যাক্সেস করতে পারবেন। উদাহরণস্বরূপ, নিম্নলিখিত AssignMessage নীতি এটি অনুরোধের পেলোডে অনুলিপি করে:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetQP</DisplayName> <Set> <Payload contentType="text/xml"> <ExtractQP>{queryinfo.dbncode}</ExtractQP> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
একাধিক প্যারামিটার
<ExtractVariables name="ExtractVariables-2">
<DisplayName>Extract a value from a query parameter</DisplayName>
<Source>request</Source>
<QueryParam name="w">
<Pattern ignoreCase="true">{firstWeather}</Pattern>
</QueryParam>
<QueryParam name="w.2">
<Pattern ignoreCase="true">{secondWeather}</Pattern>
</QueryParam>
<VariablePrefix>queryinfo</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>ধরুন আপনার API ডিজাইন আপনাকে একই নামের একাধিক কোয়েরি প্যারামিটার নির্দিষ্ট করার অনুমতি দেয়। আপনি এই নীতিটি ব্যবহার করে কোয়েরি প্যারামিটার "w" এর একাধিক ইনস্ট্যান্সের মান বের করতে পারেন। ExtractVariables নীতিতে এই কোয়েরি প্যারামিটারগুলি উল্লেখ করার জন্য, আপনি সূচী ব্যবহার করেন, যেখানে কোয়েরি প্যারামিটারের প্রথম ইনস্ট্যান্সের কোনও সূচী নেই, দ্বিতীয়টি সূচী 2 এ, তৃতীয়টি সূচী 3 এ, ইত্যাদি।
উপরের নমুনা নীতি কোডটি নিম্নলিখিত আগত অনুরোধের সাথে কাজ করে তা বিবেচনা করুন:
GET http://org1-test.apigee.net/weather?w=Boston&w=Chicago
যখন Apigee Edge উপরের ExtractVariables নীতি কোডটি এই ইনকামিং অনুরোধে প্রয়োগ করে, তখন এটি queryinfo.firstWeather ভেরিয়েবলকে Boston এবং queryInfo.secondWeather ভেরিয়েবলকে Chicago সেট করে।
আপনি এখন আপনার প্রক্সিতে queryinfo.firstWeather এবং queryinfo.secondWeather ভেরিয়েবল অ্যাক্সেস করতে পারবেন। উদাহরণস্বরূপ, নিম্নলিখিত AssignMessage নীতি এটি অনুরোধের পেলোডে অনুলিপি করে:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetQP</DisplayName> <Set> <Payload contentType="text/xml"> <ExtractQP1>{queryinfo.firstWeather}</ExtractQP1> <ExtractQP2>{queryinfo.secondWeather}</ExtractQP2> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
শিরোনাম
<ExtractVariables name='ExtractVariable-OauthToken'>
<Source>request</Source>
<Header name="Authorization">
<Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern>
</Header>
<VariablePrefix>clientrequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables> ধরুন আপনার API OAuth v2.0 বিয়ারার টোকেন ব্যবহার করছে। উপরের নমুনা নীতি কোডটি বিবেচনা করুন যা একটি OAuth v2.0 টোকেন বহনকারী অনুরোধের সাথে কাজ করে যার মধ্যে এই ধরণের একটি হেডার রয়েছে: Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM.
API ডিজাইনার হিসেবে, ধরুন আপনি একটি ক্যাশে লুকআপে টোকেন মান (কিন্তু পুরো হেডার নয়) একটি কী হিসেবে ব্যবহার করতে চান। টোকেনটি এক্সট্র্যাক্ট করতে আপনি উপরের ExtractVariables নীতি কোড ব্যবহার করতে পারেন।
যখন Apigee Edge উপরের ExtractVariables পলিসি কোডটি এই হেডারে প্রয়োগ করে, তখন এটি clientrequest.oauthtoken ভেরিয়েবলটিকে TU08xptfFfeM7aS0xHqlxTgEAdAM এ সেট করবে।
আপনি এখন আপনার প্রক্সিতে clientrequest.oauthtoken ভেরিয়েবল অ্যাক্সেস করতে পারবেন। উদাহরণস্বরূপ, নিম্নলিখিত AssignMessage নীতি এটি অনুরোধের পেলোডে অনুলিপি করে:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetHeader</DisplayName> <Set> <Payload contentType="text/xml"> <ExtractHeader>{clientrequest.oauthtoken}</ExtractHeader> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
JSON সম্পর্কে
<ExtractVariables name="ExtractVariables-3"> <Source>response</Source> <JSONPayload> <Variable name="latitude" type="float"> <JSONPath>$.results[0].geometry.location.lat</JSONPath> </Variable> <Variable name="longitude" type="float"> <JSONPath>$.results[0].geometry.location.lng</JSONPath> </Variable> </JSONPayload> <VariablePrefix>geocoderesponse</VariablePrefix> </ExtractVariables>
<JSONPayload> $নিম্নলিখিত JSON প্রতিক্রিয়া পেলোড বিবেচনা করুন:
{ "results": [{ "geometry": { "location": { "lat": 37.42291810, "lng": -122.08542120 }, "location_type": "ROOFTOP", "viewport": { "northeast": { "lat": 37.42426708029149, "lng": -122.0840722197085 }, "southwest": { "lat": 37.42156911970850, "lng": -122.0867701802915 } } } }] }
যখন Apigee Edge উপরের ExtractVariables নীতি কোডটি এই JSON বার্তায় প্রয়োগ করে, তখন এটি দুটি ভেরিয়েবল সেট করে: geocoderesponse.latitude এবং geocoderesponse.longitude । উভয় ভেরিয়েবলই geocoderesponse এর একই ভেরিয়েবল প্রিফিক্স ব্যবহার করে। এই ভেরিয়েবলগুলির জন্য প্রত্যয়টি <Variable> উপাদানের name বৈশিষ্ট্য দ্বারা স্পষ্টভাবে নির্দিষ্ট করা হয়।
geocoderesponse.latitude চলকটির মান 37.42291810 । geocoderesponse.longitude চলকটির মান -122.08542120 ।
আপনি এখন আপনার প্রক্সিতে geocoderesponse.latitude ভেরিয়েবলটি অ্যাক্সেস করতে পারবেন। উদাহরণস্বরূপ, নিম্নলিখিত AssignMessage নীতিটি প্রতিক্রিয়াতে "latitude" নামক একটি হেডারে এটি অনুলিপি করে:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetJSONVar</DisplayName> <Add> <Headers> <Header name="latitude">{geocoderesponse.latitude}</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
এক্সএমএল
<ExtractVariables name="ExtractVariables-4"> <Source>response</Source> <XMLPayload> <Namespaces> <Namespace prefix="dir">urn:43BFF88D-D204-4427-B6BA-140AF393142F</Namespace> </Namespaces> <Variable name="travelmode" type="string"> <XPath>/dir:Directions/dir:route/dir:leg/dir:step/@mode</XPath> </Variable> <Variable name="duration" type="string"> <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:value</XPath> </Variable> <Variable name="timeunit" type="string"> <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:text</XPath> </Variable> </XMLPayload> <VariablePrefix>directionsresponse</VariablePrefix> </ExtractVariables>
<XMLPayload>নিম্নলিখিত XML প্রতিক্রিয়া পেলোড বিবেচনা করুন:
<Directions xmlns="urn:43BFF88D-D204-4427-B6BA-140AF393142F">
<status>OK</status>
<route>
<summary>I-40 W</summary>
<leg>
<step mode="DRIVING">
<start_location>
<lat>41.8507300</lat>
<lng>-87.6512600</lng>
</start_location>
<end_location>
<lat>41.8525800</lat>
<lng>-87.6514100</lng>
</end_location>
<duration>
<value>19</value>
<text>minutes</text>
</duration>
</step>
</leg>
</route>
</Directions>যখন Apigee Edge উপরের ExtractVariables নীতি কোডটি এই XML বার্তায় প্রয়োগ করে, তখন এটি তিনটি ভেরিয়েবল সেট করে: directionsresponse.travelmode, directionsresponse.duration , এবং directionsresponse.timeunit । সমস্ত ভেরিয়েবল directionsresponse এর একই ভেরিয়েবল প্রিফিক্স ব্যবহার করে। এই ভেরিয়েবলগুলির জন্য প্রত্যয়টি <Variable> উপাদানের name বৈশিষ্ট্য দ্বারা স্পষ্টভাবে নির্দিষ্ট করা হয়েছে।
directionsresponse.travelmode ভেরিয়েবলটি DRIVING মান পায়। directionsresponse.duration ভেরিয়েবলটি 19 মান পায়। directionsresponse.timeunit ভেরিয়েবলটি minutes মান পায়।
আপনি এখন আপনার প্রক্সিতে directionresponse.travelmode ভেরিয়েবল অ্যাক্সেস করতে পারবেন। উদাহরণস্বরূপ, নিম্নলিখিত AssignMessage নীতিটি প্রতিক্রিয়াতে "tmode" নামক একটি হেডারে এটি অনুলিপি করে:
<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath"> <DisplayName>GetXMLVar</DisplayName> <Add> <Headers> <Header name="tmode">{directionsresponse.travelmode}</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ExtractVariables নীতি সম্পর্কে
API ডেভেলপাররা এমন API প্রক্সি তৈরি করে যা বার্তার বিষয়বস্তুর উপর ভিত্তি করে ভিন্নভাবে আচরণ করে, যার মধ্যে হেডার, URI পাথ, পেলোড এবং কোয়েরি প্যারামিটার অন্তর্ভুক্ত। প্রায়শই, প্রক্সি এই বিষয়বস্তুর কিছু অংশ একটি শর্ত বিবৃতিতে ব্যবহারের জন্য বের করে। এটি করার জন্য ExtractVariables নীতি ব্যবহার করুন।
ExtractVariables নীতি সংজ্ঞায়িত করার সময়, আপনি বেছে নিতে পারেন:
- সেট করা ভেরিয়েবলের নাম
- ভেরিয়েবলের উৎস
- কতগুলি ভেরিয়েবল বের করে সেট করতে হবে
কার্যকর করা হলে, নীতিটি কন্টেন্টে একটি টেক্সট প্যাটার্ন প্রয়োগ করে এবং একটি মিল খুঁজে পাওয়ার পর, কন্টেন্টের সাথে মনোনীত ভেরিয়েবলের মান সেট করে। অন্যান্য নীতি এবং কোড তখন সেই ভেরিয়েবলগুলিকে গতিশীল আচরণ সক্ষম করতে বা এজ API অ্যানালিটিক্সে ব্যবসায়িক ডেটা পাঠাতে ব্যবহার করতে পারে।
কন্টেন্ট-চালিত অ্যানালিটিক্স রিপোর্ট তৈরিতে ExtractVariables কীভাবে ব্যবহার করা যেতে পারে তা জানতে, কাস্টম অ্যানালিটিক্স ব্যবহার করে API বার্তার বিষয়বস্তু বিশ্লেষণ করুন দেখুন।
ব্যাপ্তি
ExtractVariables নীতির সাথে সেট করা ভেরিয়েবলগুলির বিশ্বব্যাপী সুযোগ রয়েছে। অর্থাৎ, ExtractVariables নীতি একটি নতুন ভেরিয়েবল সংজ্ঞায়িত করার পরে, আপনি প্রবাহের যেকোনো পর্যায়ে (যা ExtractVariables নীতির পরে কার্যকর হয়) যেকোনো নীতি বা কোড থেকে সেই ভেরিয়েবলটি অ্যাক্সেস করতে পারবেন। এর মধ্যে রয়েছে:
- প্রিফ্লো: প্রক্সিএন্ডপয়েন্ট এবং টার্গেটএন্ডপয়েন্ট (অনুরোধ এবং প্রতিক্রিয়া)
- পোস্টফ্লো: প্রক্সিএন্ডপয়েন্ট এবং টার্গেটএন্ডপয়েন্ট (অনুরোধ এবং প্রতিক্রিয়া)
- পোস্টক্লায়েন্টফ্লো: প্রক্সিএন্ডপয়েন্ট (শুধুমাত্র প্রতিক্রিয়া, বার্তা লগিং নীতি ব্যবহার করে)
- ত্রুটি প্রবাহ
মিল এবং পরিবর্তনশীল সৃষ্টি সম্পর্কে
ExtractVariables নীতি একটি অনুরোধ বা প্রতিক্রিয়া থেকে তথ্য বের করে এবং সেই তথ্য একটি ভেরিয়েবলে লেখে। আপনি যে ধরণের তথ্য বের করতে পারেন, যেমন URI পাথ বা XML ডেটা, তার জন্য আপনাকে মিল করার জন্য প্যাটার্ন এবং এক্সট্র্যাক্ট করা তথ্য ধরে রাখার জন্য ব্যবহৃত ভেরিয়েবলের নাম নির্দিষ্ট করতে হবে।
তবে, প্যাটার্ন ম্যাচিং কীভাবে কাজ করে তা নিষ্কাশনের উৎসের উপর নির্ভর করে। নিম্নলিখিত বিভাগগুলিতে দুটি মৌলিক তথ্যের বিভাগ বর্ণনা করা হয়েছে যা আপনি নিষ্কাশন করতে পারেন।
URI পাথ, কোয়েরি প্যারামিটার, হেডার, ফর্ম প্যারামিটার এবং ভেরিয়েবলের সাথে মিল করা
URI পাথ, কোয়েরি প্যারামিটার, হেডার, ফর্ম প্যারামিটার এবং ভেরিয়েবল থেকে তথ্য বের করার সময়, আপনি এক বা একাধিক প্যাটার্ন মেলানোর জন্য <Pattern> ট্যাগ ব্যবহার করেন। উদাহরণস্বরূপ, নিম্নলিখিত নীতির উদাহরণে URI পাথের জন্য একটি একক ম্যাচিং প্যাটার্ন দেখানো হয়েছে:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>এই উদাহরণে, urirequest.pathSeg ভেরিয়েবলটি "/a/" এর পরে proxy.pathsuffix-এ যা প্রদর্শিত হবে তাতে সেট করা আছে। উদাহরণস্বরূপ, ধরুন আপনার API প্রক্সির বেস পাথ হল /basepath/v1 । http://myCo.com/basepath/v1/a/b- এ একটি ইনবাউন্ড অনুরোধের মাধ্যমে ভেরিয়েবলটি "b" তে সেট করা আছে।
একাধিক প্যাটার্ন নির্দিষ্ট করা
আপনি <Pattern> ট্যাগের সাথে মিল রেখে একাধিক প্যাটার্ন নির্দিষ্ট করতে পারেন, যেখানে:
- সমস্ত প্যাটার্ন মিলের জন্য পরীক্ষা করা হয়।
- যদি কোনও প্যাটার্নই মেলে না, তাহলে নীতিটি কিছুই করে না এবং চলক(গুলি) তৈরি হয় না।
- যদি একাধিক প্যাটার্ন মিলে যায়, তাহলে দীর্ঘতম পাথ সেগমেন্ট সহ প্যাটার্নটি নিষ্কাশনের জন্য ব্যবহার করা হয়।
- যদি দুটি মিলে যাওয়া প্যাটার্নের দীর্ঘতম পাথ সেগমেন্ট একই থাকে, তাহলে নীতিতে প্রথমে উল্লেখিত প্যাটার্নটি নিষ্কাশনের জন্য ব্যবহার করা হবে।
পরবর্তী উদাহরণে, আপনি একটি নীতি তৈরি করবেন যাতে URI পাথের জন্য তিনটি মিলে যাওয়া প্যাটার্ন থাকবে:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>ধরুন, /basepath/v1 এর বেসপাথ সহ একটি API প্রক্সির জন্য, API প্রক্সিতে ইনবাউন্ড অনুরোধ URL এই ফর্মের:
http://myCo.com/basepath/v1/a/b
এই উদাহরণে, প্রথম প্যাটার্নটি URI এর সাথে মিলে যায় এবং urirequest.pathSeg ভেরিয়েবলটি "b" তে সেট করা আছে।
যদি অনুরোধের URLটি হয়:
http://myCo.com/basepath/v1/a/b/c/d
...তারপর তৃতীয় প্যাটার্নটি মিলে যায় এবং urirequest.pathSeg ভেরিয়েবলটি "d" তে সেট করা হয়।
একাধিক ভেরিয়েবল সহ প্যাটার্ন নির্দিষ্ট করা
আপনি ম্যাচিং প্যাটার্নে একাধিক ভেরিয়েবল নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ, আপনি দুটি ভেরিয়েবল সহ একটি ম্যাচিং প্যাটার্ন নির্দিষ্ট করেন:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/{pathSeg1}/c/{pathSeg2}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>আবার ধরুন /basepath/v1 এর বেস পাথ সহ একটি API প্রক্সি, ইনবাউন্ড রিকোয়েস্ট URL এর জন্য:
http://myCo.com/basepath/v1/a/b/c/d
... urirequest.pathSeg1 ভেরিয়েবলটি "b" তে সেট করা হয়েছে এবং urirequest.pathSeg2 ভেরিয়েবলটি "d" তে সেট করা হয়েছে।
প্যাটার্নে একাধিক উদাহরণ মেলানো
একই নামের একাধিক আইটেম থাকলে আপনি প্যাটার্ন মেলাতে পারেন। উদাহরণস্বরূপ, আপনি এমন একটি অনুরোধ করতে পারেন যাতে একাধিক কোয়েরি প্যারামিটার বা একই নামের একাধিক হেডার থাকে। নিম্নলিখিত অনুরোধে "w" নামে দুটি কোয়েরি প্যারামিটার রয়েছে:
http://myCo.com/basepath/v1/a/b/c/d?w=1&w=2
ExtractVariables নীতিতে এই ক্যোয়ারী প্যারামিটারগুলি উল্লেখ করার জন্য, আপনি indexes ব্যবহার করেন, যেখানে ক্যোয়ারী প্যারামিটারের প্রথম উদাহরণে কোনও সূচী থাকে না, দ্বিতীয়টি সূচী 2 এ থাকে, তৃতীয়টি সূচী 3 এ থাকে, ইত্যাদি। উদাহরণস্বরূপ, নিম্নলিখিত নীতিটি অনুরোধে "w" নামক দ্বিতীয় ক্যোয়ারী প্যারামিটারের মান বের করে:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<QueryParam name="w.2">
<Pattern ignoreCase="true">{secondW}</Pattern>
</QueryParam>
<VariablePrefix>urirequest</VariablePrefix>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>urirequest.secondW ভেরিয়েবলটি "2" তে সেট করা আছে। যদি অনুরোধ থেকে দ্বিতীয় কোয়েরি প্যারামিটারটি বাদ দেওয়া হয়, তাহলে urirequest.secondW ভেরিয়েবলটি খালি থাকে। অনুরোধে একই নামের একাধিক আইটেম থাকলে যেকোনো সময় ইন্ডেক্সিং ব্যবহার করুন।
প্যাটার্নে বিশেষ অক্ষর ব্যবহার করা
URI পাথ মেলানোর সময়, আপনি প্যাটার্নে "*" এবং "**" ওয়াইল্ডকার্ড অক্ষর ব্যবহার করতে পারেন, যেখানে:
- "*" পথের যেকোনো একটি অংশের সাথে মেলে
- "**" পথের একাধিক অংশের সাথে মেলে
উদাহরণস্বরূপ, আপনি নীচের চিত্রের মতো <URIPath> উপাদানে প্যাটার্ন নির্দিষ্ট করুন:
<URIPath>
<Pattern ignoreCase="true">/a/*/{id}</Pattern>
<Pattern ignoreCase="true">/a/**/{id}</Pattern>
</URIPath>প্রথম প্যাটার্নটি pathsuffix (বেসপাথ অনুসরণকারী URI পাথের অংশ) যেমন "/a/b/c", "/a/foo/bar" ইত্যাদির সাথে অনুরোধগুলির সাথে মেলে। দ্বিতীয় প্যাটার্নটি "/a/" এর পরে যেকোনো সংখ্যক পাথ সেগমেন্টের সাথে মেলে, যেমন "/a/foo/bar/baz/c", সেইসাথে "/a/b/c" এবং "/a/foo/bar"।
প্যারামিটার, হেডার এবং ফর্ম প্যারামিটারের জন্য প্যাটার্ন নির্দিষ্ট করার সময়, "*" অক্ষরটি যেকোনো সংখ্যক অক্ষরের সাথে মিল করার জন্য নির্দিষ্ট করে। উদাহরণস্বরূপ, একটি হেডার মেলানোর সময়, প্যাটার্নটি এইভাবে নির্দিষ্ট করুন:
*; অক্ষর সেট={এনকোডিং}
এই প্যাটার্নটি "text/xml;charset=UTF-16" এবং "application/xml;charset=ASCII" মানের সাথে মেলে।
যদি ExtractVariables নীতিতে পাস করা মানটিতে "{" এর মতো একটি বিশেষ অক্ষর থাকে, তাহলে এটি এড়াতে "%" অক্ষরটি ব্যবহার করুন। নিম্নলিখিত উদাহরণটি প্যাটার্নের "{" এবং "}" অক্ষরগুলিকে এড়িয়ে যায় কারণ এগুলি কোয়েরি প্যারামিটারের মানের আক্ষরিক অক্ষর হিসাবে ব্যবহৃত হয়:
<QueryParam>
<Pattern ignoreCase="true">%{user%} {name}</Pattern>
</QueryParam>এই উদাহরণে, প্যাটার্নটি "{user} Steve" মানের সাথে মেলে কিন্তু "user Steve" মানের সাথে মেলে না।
JSON এবং XML এর সাথে মিল করা হচ্ছে
JSON এবং XML থেকে ডেটা বের করার সময়, আপনি নীতিতে এক বা একাধিক <Variable> ট্যাগ নির্দিষ্ট করেন। <Variable> ট্যাগটি গন্তব্য ভেরিয়েবলের নাম নির্দিষ্ট করে যেখানে এক্সট্র্যাক্ট করা তথ্য সংরক্ষণ করা হয়, এবং JsonPath (JSON) বা XPATH (XML) এক্সট্র্যাক্ট করা তথ্যের জন্য।
নীতিমালার সমস্ত <Variable> ট্যাগ মূল্যায়ন করা হয়, যাতে আপনি একটি একক নীতি থেকে একাধিক ভেরিয়েবল পূরণ করতে পারেন। যদি <Variable> ট্যাগটি JSON বা XML-এর একটি বৈধ ক্ষেত্রে মূল্যায়ন না করে, তাহলে সংশ্লিষ্ট ভেরিয়েবল তৈরি করা হয় না।
নিম্নলিখিত উদাহরণে একটি ExtractVariables নীতি দেখানো হয়েছে যা একটি প্রতিক্রিয়ার JSON বডি থেকে দুটি ভেরিয়েবল পূরণ করে:
<ExtractVariables name="ExtractVariables-3"> <Source>response</Source> <JSONPayload> <Variable name="latitude" type="float"> <JSONPath>$.results[0].geometry.location.lat</JSONPath> </Variable> <Variable name="longitude" type="float"> <JSONPath>$.results[0].geometry.location.lng</JSONPath> </Variable> </JSONPayload> <VariablePrefix>geocoderesponse</VariablePrefix> </ExtractVariables>
একই ভেরিয়েবলে একাধিক স্থানে লেখা
সেট করার জন্য ভেরিয়েবলের নাম নির্বাচন করার সময় সাবধানতা অবলম্বন করুন। নীতিটি প্রথম এক্সট্রাকশন প্যাটার্ন থেকে শেষ পর্যন্ত ক্রমানুসারে কার্যকর হয়। যদি নীতিটি একাধিক স্থান থেকে একই ভেরিয়েবলে একটি মান লেখে, তাহলে নীতিতে শেষ লেখাটি ভেরিয়েবলের মান নির্ধারণ করে। (আপনি যা চান তা এটি হতে পারে।)
উদাহরণস্বরূপ, আপনি একটি টোকেন মান বের করতে চান যা একটি কোয়েরি প্যারামিটারে অথবা একটি হেডারে পাস করা যেতে পারে, যেমনটি নীচে দেখানো হয়েছে:
<!-- If token only in query param, the query param determines the value.
If token is found in both the query param and header, header sets value. -->
<QueryParam name="token">
<Pattern ignoreCase="true">{tokenValue}</Pattern>
</QueryParam>
<!-- Overwrite tokenValue even if it was found in query parameter. -->
<Header name="Token">
<Pattern ignoreCase="true">{tokenValue}</Pattern>
</Header>যখন কোনও মিল না হয় তখন কী ঘটে তা নিয়ন্ত্রণ করা
যদি প্যাটার্নটি মিল না করে, তাহলে সংশ্লিষ্ট ভেরিয়েবলটি তৈরি করা হয় না। অতএব, যদি অন্য কোনও নীতি ভেরিয়েবলটিকে উল্লেখ করে, তাহলে এটি একটি ত্রুটির কারণ হতে পারে।
একটি বিকল্প হল <IgnoreUnresolvedVariables> কে true তে সেট করা, যে নীতিটি ভেরিয়েবলটিকে উল্লেখ করে, যাতে নীতিটি যেকোনো অমীমাংসিত ভেরিয়েবলকে খালি স্ট্রিং (নাল) হিসেবে বিবেচনা করে:
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
উপাদানের রেফারেন্স
উপাদানের রেফারেন্সটি ExtractVariables নীতির উপাদান এবং বৈশিষ্ট্যগুলি বর্ণনা করে।
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables 1</DisplayName> <Source clearPayload="true|false">request</Source> <VariablePrefix>myprefix</VariablePrefix> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> </URIPath> <QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam> <Header name="Authorization"> <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern> </Header> <FormParam name="greeting"> <Pattern>hello {user}</Pattern> </FormParam> <Variable name="request.content"> <Pattern>hello {user}</Pattern> </Variable> <JSONPayload> <Variable name="name"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable> </XMLPayload> </ExtractVariables>
<এক্সট্র্যাক্টভেরিয়েবল> বৈশিষ্ট্য
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
name | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<সূত্র> উপাদান
(ঐচ্ছিক) পার্স করার জন্য ভেরিয়েবল নির্দিষ্ট করে। <Source> এর মান ডিফল্টভাবে message এ থাকে। message মান প্রসঙ্গ-সংবেদনশীল। একটি অনুরোধ প্রবাহে, message অনুরোধ বার্তার সমাধান করে। একটি প্রতিক্রিয়া প্রবাহে, message প্রতিক্রিয়া বার্তার সমাধান করে।
যদিও আপনি প্রায়শই এই নীতিটি একটি অনুরোধ বা প্রতিক্রিয়া বার্তা থেকে তথ্য বের করার জন্য ব্যবহার করেন, আপনি এটি যেকোনো ভেরিয়েবল থেকে তথ্য বের করতে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি এটি AccessEntity নীতি দ্বারা তৈরি একটি সত্তা থেকে তথ্য বের করতে, পরিষেবা কলআউট নীতি দ্বারা ফেরত পাঠানো ডেটা থেকে, অথবা একটি XML বা JSON অবজেক্ট থেকে তথ্য বের করতে ব্যবহার করতে পারেন।
যদি <Source> সমাধান করা না যায়, অথবা একটি অ-বার্তা ধরণের সমাধান করে, তাহলে নীতিটি সাড়া দিতে ব্যর্থ হবে।
<Source clearPayload="true|false">request</Source>
| ডিফল্ট: | বার্তা |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
| ক্লিয়ারপেলোড | <Source> থেকে ডেটা বের করার পর নির্দিষ্ট পেলোডটি সাফ করতে চাইলে true তে সেট করুন। | মিথ্যা | ঐচ্ছিক | বুলিয়ান |
<VariablePrefix> উপাদান
(ঐচ্ছিক) সম্পূর্ণ ভেরিয়েবলের নামটি <VariablePrefix> , একটি বিন্দু এবং <Pattern> উপাদান বা <Variable> উপাদানের {কোঁকড়া বন্ধনী}-এ আপনার সংজ্ঞায়িত নামটি যোগ করে তৈরি করা হয়। উদাহরণস্বরূপ: myprefix.id , myprefix.dbncode , অথবা myprefix.oauthtoken.
<VariablePrefix>myprefix</VariablePrefix>
উদাহরণস্বরূপ, ধরুন নামের মান "user"।
- যদি
<VariablePrefix>নির্দিষ্ট না করা থাকে, তাহলে এক্সট্র্যাক্ট করা মানগুলিuserনামক একটি ভেরিয়েবলের জন্য নির্ধারিত হয়। - যদি
<VariablePrefix>কে myprefix হিসেবে নির্দিষ্ট করা হয়, তাহলে এক্সট্র্যাক্ট করা মানগুলিmyprefix.userনামক একটি ভেরিয়েবলের জন্য নির্ধারিত হয়।
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
<IgnoreUnresolvedVariables> উপাদান
(ঐচ্ছিক) যেকোনো অমীমাংসিত চলককে খালি স্ট্রিং (নাল) হিসেবে গণ্য করার জন্য true হিসেবে সেট করুন। কোনো রেফারেন্সকৃত চলক অমীমাংসিত থাকলে নীতিটি যদি একটি ত্রুটি বর্ষণ করতে চায়, তাহলে false হিসেবে সেট করুন।
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
| ডিফল্ট: | মিথ্যা |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | বুলিয়ান |
যদি একটি XPath রেফারেন্স একটি <XMLPayload> তে অমীমাংসিত থাকে, তাহলে নীতিটি নিম্নলিখিত ত্রুটিটি ছুঁড়ে দেয়:
{ "fault":{ "faultstring":"Unresolved xpath path in policy policy_name.", "detail":{ "errorcode":"steps.extractvariables.InvalidXPath" } } }
<URIPath> উপাদান
(ঐচ্ছিক, তবে আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) একটি অনুরোধ উৎস বার্তার proxy.pathsuffix থেকে একটি মান বের করে। প্যাটার্নে প্রয়োগ করা পাথ হল proxy.pathsuffix, যা API Proxy-এর জন্য বেসপাথ অন্তর্ভুক্ত করে না। যদি উৎস বার্তাটি একটি বার্তা ধরণের প্রতিক্রিয়াতে সমাধান করে, তাহলে এই উপাদানটি কিছুই করে না।
<URIPath>
<Pattern ignoreCase="false">/accounts/{id}</Pattern>
</URIPath>একাধিক <Pattern> উপাদান ব্যবহার করা সম্ভব:
<URIPath>
<Pattern ignoreCase="false">/accounts/{id}</Pattern>
<Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern>
</URIPath>| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক। তবে, আপনাকে নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , অথবা <XMLPayload>. |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
| উপেক্ষা করুন কেস | প্যাটার্ন মেলানোর সময় কেস উপেক্ষা করার জন্য নির্দিষ্ট করে। | মিথ্যা | ঐচ্ছিক | বুলিয়ান |
<ক্যোয়ারীপ্যারাম> উপাদান
(ঐচ্ছিক, তবে আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) একটি অনুরোধ উৎস বার্তার নির্দিষ্ট ক্যোয়ারী প্যারামিটার থেকে একটি মান বের করে। যদি উৎস বার্তাটি একটি বার্তা ধরণের প্রতিক্রিয়াতে সমাধান করে, তাহলে এই উপাদানটি কিছুই করে না।
<QueryParam name="code">
<Pattern ignoreCase="true">DBN{dbncode}</Pattern>
</QueryParam>যদি একাধিক কোয়েরি প্যারামিটারের নাম একই থাকে, তাহলে প্যারামিটারগুলি উল্লেখ করতে সূচী ব্যবহার করুন:
<QueryParam name="w.2">
<Pattern ignoreCase="true">{secondW}</Pattern>
</QueryParam>| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক। তবে, আপনাকে নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , অথবা <XMLPayload>. |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
| নাম | ক্যোয়ারী প্যারামিটারের নাম নির্দিষ্ট করে। যদি একাধিক ক্যোয়ারী প্যারামিটারের একই নাম থাকে, তাহলে ইনডেক্সড রেফারেন্সিং ব্যবহার করুন, যেখানে ক্যোয়ারী প্যারামিটারের প্রথম ইনস্ট্যান্সে কোনও ইনডেক্স নেই, দ্বিতীয়টি ইনডেক্স 2 এ, তৃতীয়টি ইনডেক্স 3 এ, ইত্যাদি। | নিষিদ্ধ | প্রয়োজনীয় | স্ট্রিং |
<শিরোনাম> উপাদান
(ঐচ্ছিক, তবে আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) নির্দিষ্ট অনুরোধ বা প্রতিক্রিয়া বার্তার নির্দিষ্ট HTTP হেডার থেকে একটি মান বের করে। যদি একাধিক হেডারের একই নাম থাকে, তাহলে তাদের মানগুলি একটি অ্যারেতে সংরক্ষণ করা হয়।
<!-- The name is the actual header name. --> <Header name="Authorization"> <!-- Provide a name for your new custom variable here. --> <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern> </Header>
যদি একাধিক হেডারের নাম একই থাকে, তাহলে অ্যারেতে পৃথক হেডার উল্লেখ করতে সূচী ব্যবহার করুন:
<Header name="myHeader.2">
<Pattern ignoreCase="true">{secondHeader}</Pattern>
</Header>অথবা অ্যারের সমস্ত হেডার তালিকাভুক্ত করার জন্য নিম্নলিখিতগুলি ব্যবহার করুন:
<Header name="myHeader.values">
<Pattern ignoreCase="true">{myHeaders}</Pattern>
</Header>| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক। তবে, আপনাকে নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , অথবা <XMLPayload>. |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
| নাম | যে হেডার থেকে আপনি মানটি বের করেন তার নাম নির্দিষ্ট করে। যদি একাধিক হেডারের একই নাম থাকে, তাহলে ইনডেক্সড রেফারেন্সিং ব্যবহার করুন, যেখানে হেডারের প্রথম ইনস্ট্যান্সে কোনও ইনডেক্স নেই, দ্বিতীয়টি ইনডেক্স 2 এ, তৃতীয়টি ইনডেক্স 3 এ, ইত্যাদি। অ্যারেতে সমস্ত হেডার পেতে .values ব্যবহার করুন। | নিষিদ্ধ | প্রয়োজনীয় | স্ট্রিং |
<FormParam> উপাদান
(ঐচ্ছিক, তবে আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) নির্দিষ্ট অনুরোধ বা প্রতিক্রিয়া বার্তার নির্দিষ্ট ফর্ম প্যারামিটার থেকে একটি মান বের করে। ফর্ম প্যারামিটারগুলি কেবল তখনই বের করা যেতে পারে যখন নির্দিষ্ট বার্তার Content-Type হেডার application/x-www-form-urlencoded হয়।
<FormParam name="greeting">
<Pattern>hello {user}</Pattern>
</FormParam>| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক। তবে, আপনাকে নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , অথবা <XMLPayload>. |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
| নাম | যে ফর্ম প্যারামিটার থেকে আপনি মানটি বের করেন তার নাম। | নিষিদ্ধ | প্রয়োজনীয় | স্ট্রিং |
<ভেরিয়েবল> উপাদান
(ঐচ্ছিক, তবে আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) একটি ভ্যারিয়েবলের নাম নির্দিষ্ট করে যেখান থেকে একটি মান বের করা হবে।
<Variable name="myVar">
<Pattern>hello {user}</Pattern>
</Variable>চলক থেকে দুটি মান বের করতে:
<Variable name="myVar">
<Pattern>hello {firstName} {lastName}</Pattern>
</Variable>| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক। তবে, আপনাকে নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , অথবা <XMLPayload>. |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
| নাম | যে চলক থেকে মান বের করা হবে তার নাম। | নিষিদ্ধ | প্রয়োজনীয় | স্ট্রিং |
<JSONPayload> উপাদান
(ঐচ্ছিক, তবে আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) JSON-ফর্ম্যাট করা বার্তাটি নির্দিষ্ট করে যেখান থেকে ভেরিয়েবলের মান বের করা হবে। JSON নিষ্কাশন কেবল তখনই করা হয় যখন বার্তার Content-Type হেডারটি application/json হয়।
<JSONPayload> <Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload>
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক। তবে, আপনাকে নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , অথবা <XMLPayload>. |
| প্রকার: | নিষিদ্ধ |
<JSONPayload>/<পরিবর্তনশীল> উপাদান
(JSONPayload উপাদানের মধ্যে প্রয়োজনীয়।) এক্সট্র্যাক্ট করা মানটি যেখানে বরাদ্দ করা হয়েছে সেই ভেরিয়েবলটি নির্দিষ্ট করে। একাধিক ভেরিয়েবল পূরণ করতে আপনি JSONPayload> উপাদানে একাধিক <Variable> ট্যাগ অন্তর্ভুক্ত করতে পারেন।
<Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable>
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | JSONPayload উপাদানের মধ্যে প্রয়োজনীয়। |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
| নাম | যে ভেরিয়েবলে এক্সট্র্যাক্ট করা মান নির্ধারিত হবে তার নাম উল্লেখ করে। | নাম | প্রয়োজনীয় | স্ট্রিং |
| টাইপ করুন | চলক মানের ডাটা টাইপ নির্দিষ্ট করে। | নিষিদ্ধ | ঐচ্ছিক | স্ট্রিং। এর মধ্যে থেকে নির্বাচন করুন:
|
<JSONPayload>/<Variable>/<JSONPath> উপাদান
(JSONPayload:Variable উপাদানের মধ্যে প্রয়োজনীয়।) JSON-ফরম্যাট করা বার্তা থেকে একটি মান বের করতে ব্যবহৃত JSON পাথ নির্দিষ্ট করে।
<Variable name="name"> <JSONPath>$.rss.channel.title</JSONPath> </Variable>
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | স্ট্রিং |
<XMLPayload> উপাদান
(ঐচ্ছিক, তবে আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) XML-ফরম্যাট করা বার্তাটি নির্দিষ্ট করে যেখান থেকে ভেরিয়েবলের মান বের করা হবে। XML পেলোডগুলি তখনই বের করা হয় যখন বার্তার Content-Type হেডার text/xml , application/xml , অথবা application/*+xml হয়।
<XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="name" type="boolean"> <XPath>/apigee:test/apigee:example</XPath> </Variable> </XMLPayload>
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক। তবে, আপনাকে নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , অথবা <XMLPayload>. |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
stopPayloadProcessing | একটি ভেরিয়েবল পূরণ করার পরে XPath মূল্যায়ন বন্ধ করতে | মিথ্যা | ঐচ্ছিক | বুলিয়ান |
<XMLPayload>/<Namespaces> এলিমেন্ট
(ঐচ্ছিক) XPath মূল্যায়নে ব্যবহৃত নেমস্পেস নির্দিষ্ট করে। যদি আপনি আপনার XPath এক্সপ্রেশনে নেমস্পেস ব্যবহার করেন, তাহলে আপনাকে এখানে নেমস্পেসগুলি ঘোষণা করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।
<XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="legName" type="string"> <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath> </Variable> </XMLPayload>
যদি আপনি আপনার XPath এক্সপ্রেশনে namespace ব্যবহার না করেন, তাহলে আপনি <Namespaces> উপাদানটি বাদ দিতে পারেন অথবা মন্তব্য করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
<XMLPayload stopPayloadProcessing="false"> <!-- <Namespaces/> --> <Variable name="legName" type="string"> <XPath>/Directions/route/leg/name</XPath> </Variable> </XMLPayload>
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
prefix | নামস্থান উপসর্গ। | নিষিদ্ধ | প্রয়োজনীয় | স্ট্রিং |
<XMLPayload>/<পরিবর্তনশীল> উপাদান
(ঐচ্ছিক) এমন একটি চলক নির্দিষ্ট করে যেখানে নিষ্কাশিত মান নির্ধারিত হবে।
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি | আদর্শ |
|---|---|---|---|---|
| নাম | যে ভেরিয়েবলে এক্সট্র্যাক্ট করা মান নির্ধারিত হবে তার নাম উল্লেখ করে। | নাম | প্রয়োজনীয় | স্ট্রিং |
| টাইপ করুন | চলক মানের ডাটা টাইপ নির্দিষ্ট করে। | বুলিয়ান | ঐচ্ছিক | স্ট্রিং। এর মধ্যে থেকে নির্বাচন করুন:
|
<XMLPayload>/<Variable>/<XPath> এলিমেন্ট
(XMLPayload:Variable উপাদানের মধ্যে প্রয়োজনীয়।) ভেরিয়েবলের জন্য নির্ধারিত XPath নির্দিষ্ট করে। শুধুমাত্র XPath 1.0 এক্সপ্রেশন সমর্থিত।
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
একটি নেমস্পেস সহ উদাহরণ। যদি আপনি আপনার XPath এক্সপ্রেশনে নেমস্পেস ব্যবহার করেন, তাহলে আপনাকে নীতির <XMLPayload><Namespaces> বিভাগে নেমস্পেসগুলি ঘোষণা করতে হবে।
<Variable name="name" type="boolean"> <XPath>/foo:test/foo:example</XPath> </Variable>
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | স্ট্রিং |
ত্রুটির উল্লেখ
এই বিভাগটি ফল্ট কোড এবং ত্রুটি বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | ঠিক করুন |
|---|---|---|---|
steps.extractvariables.ExecutionFailed | 500 | এই ত্রুটিটি ঘটে যখন:
| build |
steps.extractvariables.ImmutableVariable | 500 | নীতিতে ব্যবহৃত একটি পরিবর্তনশীল অপরিবর্তনীয়। নীতি এই পরিবর্তনশীল সেট করতে অক্ষম ছিল. | |
steps.extractvariables.InvalidJSONPath | 500 | যদি নীতির JSONPath এলিমেন্টে একটি অবৈধ JSON পাথ ব্যবহার করা হয় তাহলে এই সমস্যাটি ঘটে। উদাহরণস্বরূপ, যদি একটি JSON পেলোডে অবজেক্টের Name না থাকে তবে আপনি নীতিতে পাথ হিসাবে Name উল্লেখ করেন, তাহলে এই ত্রুটিটি ঘটে। | build |
steps.extractvariables.JsonPathParsingFailure | 500 | এই ত্রুটিটি ঘটে যখন নীতিটি একটি JSON পাথ পার্স করতে এবং Source উপাদানে নির্দিষ্ট করা ফ্লো ভেরিয়েবল থেকে ডেটা বের করতে অক্ষম হয়। Source এলিমেন্টে উল্লেখিত ফ্লো ভেরিয়েবল বর্তমান প্রবাহে বিদ্যমান না থাকলে সাধারণত এটি ঘটে। | build |
steps.extractvariables.SetVariableFailed | 500 | এই ত্রুটিটি ঘটে যদি নীতিটি একটি ভেরিয়েবলের মান সেট করতে না পারে৷ ত্রুটিটি সাধারণত ঘটে যদি আপনি একাধিক ভেরিয়েবলের মান নির্ধারণ করার চেষ্টা করেন যার নামগুলি নেস্টেড ডট-বিভাজিত বিন্যাসে একই শব্দ দিয়ে শুরু হয়। | build |
steps.extractvariables.SourceMessageNotAvailable | 500 | এই ত্রুটিটি ঘটে যদি নীতির Source উপাদানে নির্দিষ্ট করা বার্তা পরিবর্তনশীল হয়:
| build |
steps.extractvariables.UnableToCast | 500 | এই ত্রুটিটি ঘটে যদি নীতিটি একটি ভেরিয়েবলে নিষ্কাশিত মান কাস্ট করতে অক্ষম হয়৷ সাধারণত এটি ঘটে যদি আপনি একটি ডেটা টাইপের মান অন্য ডেটা টাইপের ভেরিয়েবলে সেট করার চেষ্টা করেন। | build |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | কারণ | ঠিক করুন |
|---|---|---|
NothingToExtract | যদি নীতিতে URIPath , QueryParam , Header , FormParam , XMLPayload , বা JSONPayload এর কোনো উপাদান না থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়, কারণ বের করার মতো কিছুই নেই। | build |
NONEmptyPrefixMappedToEmptyURI | XMLPayload এলিমেন্টের অধীনে Namespace এলিমেন্টে যদি নীতির একটি প্রিফিক্স সংজ্ঞায়িত করা থাকে, কিন্তু কোনো URI সংজ্ঞায়িত করা না থাকে তাহলে এই সমস্যাটি ঘটে। | build |
DuplicatePrefix | XMLPayload এলিমেন্টের অধীনে Namespace এলিমেন্টে নীতির একই প্রিফিক্স একাধিকবার সংজ্ঞায়িত থাকলে এই ত্রুটি ঘটে। | build |
NoXPathsToEvaluate | যদি নীতিতে XMLPayload উপাদানের মধ্যে XPath উপাদান না থাকে, তাহলে এই ত্রুটির সাথে API প্রক্সির স্থাপনা ব্যর্থ হয়৷ | build |
EmptyXPathExpression | XMLPayload উপাদানের মধ্যে যদি নীতির একটি খালি XPath এক্সপ্রেশন থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়৷ | build |
NoJSONPathsToEvaluate | যদি নীতিতে JSONPayload উপাদানের মধ্যে JSONPath উপাদান না থাকে, তাহলে এই ত্রুটির সাথে API প্রক্সির স্থাপনা ব্যর্থ হয়। | build |
EmptyJSONPathExpression | XMLPayload উপাদানের মধ্যে যদি নীতির একটি খালি XPath এক্সপ্রেশন থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়৷ | build |
MissingName | যদি নীতির QueryParam , Header , FormParam বা Variable মতো নীতি উপাদানগুলির মধ্যে কোনো name বৈশিষ্ট্য না থাকে, যেখানে এটির প্রয়োজন হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়৷ | build |
PatternWithoutVariable | যদি নীতিতে Pattern উপাদানের মধ্যে নির্দিষ্ট কোনো পরিবর্তনশীল না থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। Pattern উপাদানটির জন্য ভেরিয়েবলের নাম প্রয়োজন যেখানে নিষ্কাশিত ডেটা সংরক্ষণ করা হবে। | build |
CannotBeConvertedToNodeset | যদি নীতিতে একটি XPath এক্সপ্রেশন থাকে যেখানে Variable টাইপটিকে নোডসেট হিসাবে সংজ্ঞায়িত করা হয়, কিন্তু অভিব্যক্তিটিকে নোডসেটে রূপান্তর করা যায় না, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়৷ | build |
JSONPathCompilationFailed | নীতিটি একটি নির্দিষ্ট JSON পাথ কম্পাইল করতে পারেনি৷ | |
InstantiationFailed | নীতি তাত্ক্ষণিক করা যায়নি. | |
XPathCompilationFailed | যদি উপসর্গ বা XPath উপাদানে ব্যবহৃত মান নীতিতে ঘোষিত কোনো নামস্থানের অংশ না হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। | build |
InvalidPattern | যদি নীতির মধ্যে URIPath , QueryParam , Header , FormParam , XMLPayload বা JSONPayload এর মতো উপাদানগুলির মধ্যে Pattern উপাদানের সংজ্ঞাটি অবৈধ হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়৷ | build |
ফল্ট ভেরিয়েবল
যখন এই নীতি রানটাইমে একটি ত্রুটি ট্রিগার করে তখন এই ভেরিয়েবলগুলি সেট করা হয়৷ আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।
| ভেরিয়েবল | যেখানে | উদাহরণ |
|---|---|---|
fault.name=" fault_name " | fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। | fault.name = "SourceMessageNotAvailable" |
extractvariables. policy_name .failed | policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যা ত্রুটিটি ফেলেছে। | extractvariables.EV-ParseJsonResponse.failed = true |
উদাহরণ ত্রুটি প্রতিক্রিয়া
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse" } }
উদাহরণ দোষ নিয়ম
<FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name = "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition> </FaultRule>
স্কিমা
সম্পর্কিত বিষয়
কাস্টম অ্যানালিটিক্স ব্যবহার করে API বার্তার বিষয়বস্তু বিশ্লেষণ করুন