আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
কি
ExtractVariables নীতি একটি অনুরোধ বা প্রতিক্রিয়া থেকে বিষয়বস্তু বের করে এবং সেই বিষয়বস্তুর জন্য একটি ভেরিয়েবলের মান সেট করে। আপনি শিরোনাম, URI পাথ, JSON/XML পেলোড, ফর্ম প্যারামিটার এবং ক্যোয়ারী প্যারামিটার সহ বার্তার যেকোনো অংশ বের করতে পারেন। নীতিটি বার্তা সামগ্রীতে একটি পাঠ্য প্যাটার্ন প্রয়োগ করে কাজ করে এবং একটি মিল খুঁজে পাওয়ার পরে, নির্দিষ্ট বার্তা সামগ্রীর সাথে একটি পরিবর্তনশীল সেট করে৷
আপনি প্রায়ই অনুরোধ বা প্রতিক্রিয়া বার্তা থেকে তথ্য বের করতে এই নীতিটি ব্যবহার করলে, আপনি AccessEntity নীতি , XML অবজেক্ট বা JSON অবজেক্ট দ্বারা তৈরি সত্তা সহ অন্যান্য উত্স থেকে তথ্য বের করতেও এটি ব্যবহার করতে পারেন৷
নির্দিষ্ট বার্তা বিষয়বস্তু নিষ্কাশন করার পরে, আপনি একটি অনুরোধ এবং প্রতিক্রিয়া প্রক্রিয়াকরণের অংশ হিসাবে অন্যান্য নীতিতে পরিবর্তনশীল উল্লেখ করতে পারেন।
ভিডিও
ExtractVariables নীতি সম্পর্কে আরও জানতে নিম্নলিখিত ভিডিওগুলি দেখুন৷
ভিডিও | বর্ণনা |
---|---|
এক্সএমএল পেলোড থেকে ভেরিয়েবল বের করুন | এক্সট্রাক্ট ভেরিয়েবল নীতি ব্যবহার করে একটি XML পেলোড থেকে ভেরিয়েবল বের করুন। |
JSON পেলোড থেকে ভেরিয়েবল বের করুন | এক্সট্র্যাক্ট ভেরিয়েবল নীতি ব্যবহার করে একটি JSON পেলোড থেকে ভেরিয়েবল বের করুন। |
প্যারামিটার থেকে ভেরিয়েবল বের করুন | প্যারামিটার থেকে ভেরিয়েবল বের করুন, যেমন ক্যোয়ারী, হেডার, ফর্ম বা URI প্যারামিটার। |
মাল্টি-ভ্যালু প্যারামিটার থেকে ভেরিয়েবল বের করুন | মাল্টি-ভ্যালু প্যারামিটার থেকে ভেরিয়েবল বের করুন। |
ক্যোয়ারী প্যারামিটার থেকে ভেরিয়েবল বের করুন (ক্লাসিক এজ) | ক্লাসিক এজ UI ব্যবহার করে একটি ক্যোয়ারী প্যারামিটার থেকে ভেরিয়েবল বের করুন। |
XML বা JSON পেলোড (ক্লাসিক এজ) থেকে ভেরিয়েবল বের করুন | ক্লাসিক এজ UI ব্যবহার করে একটি XML বা JSON পেলোড থেকে ভেরিয়েবল বের করুন। |
নমুনা
এই নীতি কোডের নমুনাগুলি কীভাবে নিম্নলিখিত ধরনের শিল্পকর্ম থেকে ভেরিয়েবল বের করতে হয় তা ব্যাখ্যা করে:
গিটহাব
এই লিঙ্কগুলি কর্মরত API প্রক্সি নমুনাগুলির দিকে নির্দেশ করে যা আপনি এজ এ স্থাপন এবং চালাতে পারেন। তারা ExtractVariables ব্যবহার করে এবং GitHub-এ Apigee-এর api-প্ল্যাটফর্ম-নমুনা সংগ্রহস্থলে অবস্থিত। READMEs ব্যাখ্যা করে যে কিভাবে 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>
উপাদানটি URI পাথ থেকে তথ্য বের করতে ExtractVariables নীতিকে বলে। <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 নীতিটি কার্যকর করার পরে, প্রসেসিং ফ্লোতে পরবর্তী নীতি বা কোড 12797282
স্ট্রিং মান পেতে urirequest.id
নামের ভেরিয়েবলটিকে উল্লেখ করতে পারে।
উদাহরণস্বরূপ, নিম্নলিখিত 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 নীতিটি কার্যকর করার পরে, পরবর্তী নীতিগুলি বা প্রসেসিং ফ্লোতে কোড 88271
স্ট্রিং মান পেতে queryinfo.dbncode
নামের ভেরিয়েবলটিকে উল্লেখ করতে পারে।
আপনি এখন আপনার প্রক্সিতে পরিবর্তনশীল 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 এই JSON বার্তায় উপরের ExtractVariables নীতি কোড প্রয়োগ করে, তখন এটি দুটি ভেরিয়েবল সেট করে: geocoderesponse.latitude
এবং geocoderesponse.longitude
। উভয় ভেরিয়েবলই geocoderesponse
একই পরিবর্তনশীল উপসর্গ ব্যবহার করে। এই ভেরিয়েবলের প্রত্যয়টি <Variable>
উপাদানের name
বৈশিষ্ট্য দ্বারা স্পষ্টভাবে নির্দিষ্ট করা হয়েছে।
ভেরিয়েবল geocoderesponse.latitude
37.42291810
মান পায়। ভেরিয়েবল geocoderesponse.longitude
মান পায় -122.08542120
।
আপনি এখন আপনার প্রক্সিতে পরিবর্তনশীল geocoderesponse.latitude
অ্যাক্সেস করতে পারেন। উদাহরণ স্বরূপ, নিম্নোক্ত AssignMessage নীতি এটিকে প্রতিক্রিয়ায় "অক্ষাংশ" নামের একটি শিরোনামে অনুলিপি করে:
<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 এই XML বার্তার উপরে ExtractVariables নীতি কোড প্রয়োগ করে, তখন এটি তিনটি ভেরিয়েবল সেট করে: 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 নীতি সংজ্ঞায়িত করার সময়, আপনি চয়ন করতে পারেন:
- ভেরিয়েবলের নাম সেট করতে হবে
- ভেরিয়েবলের উৎস
- কয়টি ভেরিয়েবল এক্সট্রাক্ট এবং সেট করতে হবে
সম্পাদিত হলে, নীতিটি সামগ্রীতে একটি পাঠ্য প্যাটার্ন প্রয়োগ করে এবং একটি মিল খুঁজে পাওয়ার পরে, বিষয়বস্তুর সাথে মনোনীত পরিবর্তনশীলের মান সেট করে। অন্যান্য নীতি এবং কোড তখন গতিশীল আচরণ সক্ষম করতে বা এজ এপিআই অ্যানালিটিক্সে ব্যবসার ডেটা পাঠাতে সেই ভেরিয়েবলগুলিকে গ্রাস করতে পারে।
বিষয়বস্তু-চালিত বিশ্লেষণ প্রতিবেদন তৈরি করতে ExtractVariables কিভাবে ব্যবহার করা যেতে পারে তা দেখতে, কাস্টম বিশ্লেষণ ব্যবহার করে API বার্তা সামগ্রী বিশ্লেষণ দেখুন।
ব্যাপ্তি
ExtractVariables নীতির সাথে সেট করা ভেরিয়েবলের বিশ্বব্যাপী সুযোগ রয়েছে। অর্থাৎ, ExtractVariables নীতি একটি নতুন ভেরিয়েবল সংজ্ঞায়িত করার পরে, আপনি প্রবাহের যেকোন পর্যায়ে (যা ExtractVariables নীতির পরে কার্যকর হয়) যেকোনো নীতি বা কোড থেকে সেই ভেরিয়েবলটি অ্যাক্সেস করতে পারবেন। এর মধ্যে রয়েছে:
- PreFlow: ProxyEndpoint এবং TargetEndpoint (অনুরোধ এবং প্রতিক্রিয়া)
- পোস্টফ্লো: প্রক্সিএন্ডপয়েন্ট এবং টার্গেটএন্ডপয়েন্ট (অনুরোধ এবং প্রতিক্রিয়া)
- PostClientFlow: ProxyEndpoint (শুধুমাত্র প্রতিক্রিয়া, বার্তা লগিং নীতি ব্যবহার করে)
- ত্রুটি প্রবাহ
মিল এবং পরিবর্তনশীল সৃষ্টি সম্পর্কে
ExtractVariables নীতি একটি অনুরোধ বা প্রতিক্রিয়া থেকে তথ্য বের করে এবং একটি ভেরিয়েবলের কাছে সেই তথ্য লিখে। URI পাথ বা XML ডেটার মতো প্রতিটি ধরনের তথ্য যা আপনি বের করতে পারেন, তার জন্য আপনি মিলের প্যাটার্ন এবং এক্সট্র্যাক্ট করা তথ্য ধরে রাখতে ব্যবহৃত ভেরিয়েবলের নাম উল্লেখ করেন।
যাইহোক, প্যাটার্ন ম্যাচিং পদ্ধতিটি নিষ্কাশনের উত্সের উপর নির্ভর করে। নিম্নলিখিত বিভাগগুলি আপনি আহরণ করতে পারেন এমন দুটি মৌলিক বিভাগের তথ্য বর্ণনা করে।
ইউআরআই পাথ, ক্যোয়ারী প্যারামিটার, হেডার, ফর্ম প্যারামিটার এবং ভেরিয়েবলের সাথে মিলে যাওয়া
একটি URI পাথ, ক্যোয়ারী প্যারামিটার, হেডার, ফর্ম প্যারামিটার এবং ভেরিয়েবল থেকে তথ্য বের করার সময় আপনি মিলের জন্য এক বা একাধিক প্যাটার্ন নির্দিষ্ট করতে <প্যাটার্ন> ট্যাগ ব্যবহার করেন। উদাহরণস্বরূপ, নিম্নলিখিত নীতি উদাহরণ 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" এ সেট করা হয়েছে।
একাধিক নিদর্শন নির্দিষ্ট করা
আপনি <প্যাটার্ন> ট্যাগের সাথে মিলে যাওয়ার জন্য একাধিক প্যাটার নির্দিষ্ট করতে পারেন, যেখানে:
- সমস্ত নিদর্শন ম্যাচের জন্য পরীক্ষা করা হয়.
- যদি প্যাটার্নগুলির কোনোটি মেলে না, তাহলে নীতি কিছুই করে না এবং পরিবর্তনশীল(গুলি) তৈরি করা হয় না।
- যদি একাধিক প্যাটার্ন মিলে যায়, দীর্ঘতম পাথের অংশগুলির সাথে প্যাটার্নটি নিষ্কাশনের জন্য ব্যবহার করা হয়।
- যদি দুটি মিলে যাওয়া প্যাটার্নে একই দীর্ঘতম পাথ সেগমেন্ট থাকে, তাহলে নীতিতে প্রথমে নির্দিষ্ট করা প্যাটার্নটি নিষ্কাশনের জন্য ব্যবহার করা হয়।
পরবর্তী উদাহরণে, আপনি একটি নীতি তৈরি করেন যাতে 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>
ইনবাউন্ড অনুরোধ URL-এর জন্য /basepath/v1 এর একটি বেস পাথ সহ একটি API প্রক্সিকে আবার ধরুন:
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 নীতিতে এই ক্যোয়ারী প্যারামিটারগুলি উল্লেখ করার জন্য, আপনি সূচী ব্যবহার করেন, যেখানে ক্যোয়ারী প্যারামিটারের প্রথম দৃষ্টান্তের কোন সূচক নেই, দ্বিতীয়টি সূচক 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 ভেরিয়েবলটি খালি। অনুরোধে একই নামের একাধিক আইটেম থাকলে যেকোনও সময় ইন্ডেক্সিং ব্যবহার করুন।
প্যাটার্নে বিশেষ অক্ষর ব্যবহার করা
ইউআরআই পাথ মেলে, আপনি প্যাটার্নে "*" এবং "**" ওয়াইল্ডকার্ড অক্ষর ব্যবহার করতে পারেন, যেখানে:
- "*" পথের যেকোনো একটি অংশের সাথে মেলে
- "**" পাথের একাধিক অংশের সাথে মেলে
উদাহরণ স্বরূপ, আপনি <URIPath> এলিমেন্টের প্যাটার্ন নির্দিষ্ট করুন যেমন নিচে দেখানো হয়েছে:
<URIPath> <Pattern ignoreCase="true">/a/*/{id}</Pattern> <Pattern ignoreCase="true">/a/**/{id}</Pattern> </URIPath>
প্রথম প্যাটার্নটি অনুরোধের সাথে পাথসফিক্সের সাথে মেলে (বেসপাথ অনুসরণ করে ইউআরআই পাথের অংশ) যেমন "/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> ট্যাগ উল্লেখ করেন। <ভেরিয়েবল> ট্যাগটি গন্তব্য ভেরিয়েবলের নাম উল্লেখ করে যেখানে নিষ্কাশিত তথ্য সংরক্ষণ করা হয় এবং নিষ্কাশিত তথ্যের জন্য 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>
একটি নীতিতে সত্য হিসাবে সেট করা যা নীতিটি কনফিগার করার জন্য ভেরিয়েবলকে উল্লেখ করে যে কোনো অমীমাংসিত ভেরিয়েবলকে খালি স্ট্রিং (নাল) হিসাবে বিবেচনা করতে:
<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> বৈশিষ্ট্য
<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>
ডিফল্ট: | বার্তা |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | স্ট্রিং |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
ক্লিয়ারপেলোড | আপনি যদি <উৎস> থেকে ডেটা বের করার পরে উল্লেখিত পেলোড সাফ করতে চান তাহলে সত্যে সেট করুন। | মিথ্যা | ঐচ্ছিক | বুলিয়ান |
<VariablePrefix> উপাদান
(ঐচ্ছিক) সম্পূর্ণ পরিবর্তনশীল নামটি <VariablePrefix>
, একটি বিন্দু এবং যে নামটি আপনি <Pattern>
উপাদান বা <variable> এলিমেন্টে {কোঁকড়া ধনুর্বন্ধনীতে সংজ্ঞায়িত করেছেন তা যোগ করে তৈরি করা হয়। যেমন: myprefix.id
, myprefix.dbncode
বা myprefix.oauthtoken.
<VariablePrefix>myprefix</VariablePrefix>
উদাহরণস্বরূপ, ধরুন নামের মান হল "ব্যবহারকারী"।
- যদি
<VariablePrefix>
নির্দিষ্ট করা না থাকে, তাহলে নিষ্কাশিত মানগুলি একটি ভেরিয়েবল নামেরuser
বরাদ্দ করা হয়। - যদি
<VariablePrefix>
myprefix হিসাবে নির্দিষ্ট করা হয়, তাহলে নিষ্কাশিত মানগুলিmyprefix.user
নামের একটি ভেরিয়েবলে বরাদ্দ করা হয়।
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | স্ট্রিং |
<অমীমাংসিত ভেরিয়েবল> এলিমেন্টকে উপেক্ষা করুন
(ঐচ্ছিক) কোনো অমীমাংসিত ভেরিয়েবলকে খালি স্ট্রিং (নাল) হিসাবে বিবেচনা করার জন্য 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 প্রক্সির জন্য বেসপাথ অন্তর্ভুক্ত করে না। যদি উত্স বার্তাটি একটি বার্তা প্রকারের প্রতিক্রিয়ার সমাধান করে, তাহলে এই উপাদানটি কিছুই করে না।
<URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> </URIPath>
একাধিক <প্যাটার্ন> উপাদান ব্যবহার করা সম্ভব:
<URIPath> <Pattern ignoreCase="false">/accounts/{id}</Pattern> <Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern> </URIPath>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক। যাইহোক, আপনাকে অবশ্যই নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , বা <XMLPayload>. |
প্রকার: | N/A |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
ignoreCase | প্যাটার্নের সাথে মিলে যাওয়ার সময় কেস উপেক্ষা করার জন্য নির্দিষ্ট করে। | মিথ্যা | ঐচ্ছিক | বুলিয়ান |
<QueryParam> উপাদান
(ঐচ্ছিক, কিন্তু আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) একটি অনুরোধ উত্স বার্তার নির্দিষ্ট ক্যোয়ারী প্যারামিটার থেকে একটি মান বের করে। যদি উত্স বার্তাটি একটি বার্তা প্রকারের প্রতিক্রিয়ার সমাধান করে, তাহলে এই উপাদানটি কিছুই করে না।
<QueryParam name="code"> <Pattern ignoreCase="true">DBN{dbncode}</Pattern> </QueryParam>
একাধিক ক্যোয়ারী প্যারামিটারের একই নাম থাকলে, পরামিতিগুলি উল্লেখ করতে সূচী ব্যবহার করুন:
<QueryParam name="w.2"> <Pattern ignoreCase="true">{secondW}</Pattern> </QueryParam>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক। যাইহোক, আপনাকে অবশ্যই নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , বা <XMLPayload>. |
প্রকার: | N/A |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
নাম | ক্যোয়ারী প্যারামিটারের নাম উল্লেখ করে। যদি একাধিক ক্যোয়ারী প্যারামিটারের একই নাম থাকে, তাহলে ইন্ডেক্সড রেফারেন্সিং ব্যবহার করুন, যেখানে ক্যোয়ারী প্যারামিটারের প্রথম দৃষ্টান্তের কোনো সূচক নেই, দ্বিতীয়টি সূচী 2 এ, তৃতীয়টি সূচক 3 এ, ইত্যাদি। | N/A | প্রয়োজন | স্ট্রিং |
<হেডার> উপাদান
(ঐচ্ছিক, তবে আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) নির্দিষ্ট অনুরোধ বা প্রতিক্রিয়া বার্তার নির্দিষ্ট 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>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক। যাইহোক, আপনাকে অবশ্যই নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , বা <XMLPayload>. |
প্রকার: | N/A |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
নাম | হেডারের নাম উল্লেখ করে যেখান থেকে আপনি মান বের করেন। যদি একাধিক হেডারের একই নাম থাকে, তাহলে ইনডেক্সড রেফারেন্সিং ব্যবহার করুন, যেখানে হেডারের প্রথম দৃষ্টান্তের কোনো সূচক নেই, দ্বিতীয়টি সূচী 2-এ, তৃতীয়টি 3-এ, ইত্যাদি। অ্যারেতে সমস্ত হেডার পেতে .values ব্যবহার করুন। | N/A | প্রয়োজন | স্ট্রিং |
<FormParam> উপাদান
(ঐচ্ছিক, কিন্তু আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারি দেখুন।) নির্দিষ্ট অনুরোধ বা প্রতিক্রিয়া বার্তার নির্দিষ্ট ফর্ম প্যারামিটার থেকে একটি মান বের করে। ফর্ম প্যারামিটারগুলি শুধুমাত্র তখনই বের করা যেতে পারে যখন নির্দিষ্ট বার্তার Content-Type
শিরোনামটি application/x-www-form-urlencoded
হয়।
<FormParam name="greeting"> <Pattern>hello {user}</Pattern> </FormParam>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক। যাইহোক, আপনাকে অবশ্যই নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , বা <XMLPayload>. |
প্রকার: | N/A |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
নাম | ফর্ম প্যারামিটারের নাম যেখান থেকে আপনি মান বের করেন। | N/A | প্রয়োজন | স্ট্রিং |
<ভেরিয়েবল> উপাদান
(ঐচ্ছিক, কিন্তু আরও তথ্যের জন্য নীচের টেবিলে উপস্থিতি সারিটি দেখুন।) একটি ভেরিয়েবলের নাম উল্লেখ করে যেখান থেকে একটি মান বের করতে হবে।
<Variable name="myVar"> <Pattern>hello {user}</Pattern> </Variable>
ভেরিয়েবল থেকে দুটি মান বের করতে:
<Variable name="myVar"> <Pattern>hello {firstName} {lastName}</Pattern> </Variable>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক। যাইহোক, আপনাকে অবশ্যই নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , বা <XMLPayload>. |
প্রকার: | N/A |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
নাম | যে ভেরিয়েবল থেকে মান বের করতে হবে তার নাম। | N/A | প্রয়োজন | স্ট্রিং |
<JSONPayload> উপাদান
(ঐচ্ছিক, কিন্তু আরও তথ্যের জন্য নীচের সারণীতে উপস্থিতি সারিটি দেখুন।) JSON- ফরম্যাটেড বার্তাটি নির্দিষ্ট করে যেখান থেকে ভেরিয়েবলের মান বের করা হবে। JSON নিষ্কাশন শুধুমাত্র তখনই সঞ্চালিত হয় যখন বার্তার বিষয়বস্তু-প্রকার শিরোনাম অ্যাপ্লিকেশন/json হয়।
<JSONPayload> <Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable> </JSONPayload>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক। যাইহোক, আপনাকে অবশ্যই নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , বা <XMLPayload>. |
প্রকার: | N/A |
<JSONPayload>/<ভেরিয়েবল> উপাদান
(JSONPayload উপাদানের মধ্যে প্রয়োজনীয়।) ভেরিয়েবলটি নির্দিষ্ট করে যেখানে নিষ্কাশিত মান বরাদ্দ করা হয়। আপনি একাধিক ভেরিয়েবল তৈরি করতে <JSONPayload> উপাদানে একাধিক <Variable> ট্যাগ অন্তর্ভুক্ত করতে পারেন।
<Variable name="name" type="string"> <JSONPath>{example}</JSONPath> </Variable>
ডিফল্ট: | N/A |
উপস্থিতি: | JSONPayload উপাদানের মধ্যে প্রয়োজনীয়। |
প্রকার: | N/A |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
নাম | ভেরিয়েবলের নাম উল্লেখ করে যেখানে এক্সট্র্যাক্ট করা মান বরাদ্দ করা হবে। | নাম | প্রয়োজন | স্ট্রিং |
টাইপ | পরিবর্তনশীল মানের ডেটা টাইপ নির্দিষ্ট করে। | N/A | ঐচ্ছিক | স্ট্রিং থেকে নির্বাচন করুন:
|
<JSONPayload>/<ভেরিয়েবল>/<JSONPath> উপাদান
(JSONPayload:ভেরিয়েবল এলিমেন্টের মধ্যে প্রয়োজনীয়।) JSON-ফর্ম্যাটেড বার্তা থেকে একটি মান বের করতে ব্যবহৃত JSON পাথ নির্দিষ্ট করে।
<Variable name="name"> <JSONPath>$.rss.channel.title</JSONPath> </Variable>
ডিফল্ট: | N/A |
উপস্থিতি: | প্রয়োজন |
প্রকার: | স্ট্রিং |
<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>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক। যাইহোক, আপনাকে অবশ্যই নিম্নলিখিতগুলির মধ্যে অন্তত একটি অন্তর্ভুক্ত করতে হবে: <URIPath> , <QueryParam> , <Header> , <FormParam> , <JSONPayload> , বা <XMLPayload>. |
প্রকার: | N/A |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
stopPayloadProcessing | একটি ভেরিয়েবল পপুলেট হওয়ার পরে XPath মূল্যায়ন বন্ধ করতে | মিথ্যা | ঐচ্ছিক | বুলিয়ান |
<XMLPayload>/<নেমস্পেস> উপাদান
(ঐচ্ছিক) 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 অভিব্যক্তিতে নামস্থান ব্যবহার না করেন, তাহলে আপনি <Namespaces>
উপাদানটি বাদ দিতে বা মন্তব্য করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণটি দেখায়:
<XMLPayload stopPayloadProcessing="false"> <!-- <Namespaces/> --> <Variable name="legName" type="string"> <XPath>/Directions/route/leg/name</XPath> </Variable> </XMLPayload>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | স্ট্রিং |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
prefix | নামস্থান উপসর্গ। | N/A | প্রয়োজন | স্ট্রিং |
<XMLPayload>/<variable> উপাদান
(ঐচ্ছিক) ভেরিয়েবল নির্দিষ্ট করে যেখানে নিষ্কাশিত মান বরাদ্দ করা হবে।
<Variable name="name" type="boolean"> <XPath>/test/example</XPath> </Variable>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | N/A |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
নাম | ভেরিয়েবলের নাম উল্লেখ করে যেখানে এক্সট্র্যাক্ট করা মান বরাদ্দ করা হবে। | নাম | প্রয়োজন | স্ট্রিং |
টাইপ | পরিবর্তনশীল মানের ডেটা টাইপ নির্দিষ্ট করে। | বুলিয়ান | ঐচ্ছিক | স্ট্রিং থেকে নির্বাচন করুন:
|
<XMLPayload>/<ভেরিয়েবল>/<XPath> উপাদান
(XMLPayload:ভেরিয়েবল এলিমেন্টের মধ্যে প্রয়োজনীয়।) ভেরিয়েবলের জন্য সংজ্ঞায়িত 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>
ডিফল্ট: | N/A |
উপস্থিতি: | প্রয়োজন |
প্রকার: | স্ট্রিং |
ত্রুটি উল্লেখ
এই বিভাগটি ফল্ট কোড এবং ত্রুটি বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
ফল্ট কোড | 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 বার্তা সামগ্রী বিশ্লেষণ করুন