আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
SourceMessageNotAvailable
ত্রুটি কোড
steps.extractvariables.SourceMessageNotAvailable
ত্রুটি প্রতিক্রিয়া বডি
{ "fault": { "faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]", "detail": { "errorcode": "steps.extractvariables.SourceMessageNotAvailable" } } }
কারণ
এক্সট্র্যাক্ট ভেরিয়েবল নীতির <Source>
উপাদানে নির্দিষ্ট করা বার্তা ভেরিয়েবল যদি হয়: এই ত্রুটিটি ঘটে:
- সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
- সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)
উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি এক্সট্র্যাক্ট ভেরিয়েবল নীতিটি অনুরোধের প্রবাহে কার্যকর হয়, কিন্তু <Source>
উপাদানটি response
বা error
ভেরিয়েবলে সেট করা থাকে, যা অনুরোধের প্রবাহে বিদ্যমান নেই।
রোগ নির্ণয়
এক্সট্র্যাক্ট ভেরিয়েবল নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে এবং ভেরিয়েবলের নাম যা উপলব্ধ নয়। আপনি ত্রুটি প্রতিক্রিয়ার
faultstring
উপাদানে এই দুটি আইটেম খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্টস্ট্রিং-এ, নীতির নাম হলExtractVariables-1
এবং ভেরিয়েবল হলresponse
:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"
ব্যর্থ এক্সট্র্যাক্ট ভেরিয়েবল নীতি XML-এ, যাচাই করুন যে উপাদানটিতে সেট করা ভেরিয়েবলের নাম ফল্ট স্ট্রিং-এ চিহ্নিত পরিবর্তনশীল নামের সাথে মেলে (উপরের ধাপ #1)। উদাহরণ স্বরূপ, নিম্নোক্ত এক্সট্র্যাক্ট ভেরিয়েবল নীতি উপাদানটিতে একটি ভেরিয়েবল নামক
response
নির্দিষ্ট করে, যা ফল্ট স্ট্রিং এর সাথে মেলে:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>
নির্ণয় করুন যে
<Source>
উপাদানটিতে ব্যবহৃত ভেরিয়েবলটি সংজ্ঞায়িত করা হয়েছে এবং যে প্রবাহে এক্সট্র্যাক্ট ভেরিয়েবল নীতিটি কার্যকর করা হচ্ছে সেখানে উপলব্ধ কিনা।যদি পরিবর্তনশীল হয়:
- সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
- সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)
তাহলে এটি ত্রুটির কারণ।
একটি উদাহরণ হিসাবে, ধরা যাক উপরে দেখানো এক্সট্র্যাক্ট ভেরিয়েবল নীতি অনুরোধের প্রবাহে কার্যকর হয়। মনে রাখবেন যে এক্সট্রাক্ট ভেরিয়েবল নীতির
<Source>
উপাদানেresponse
ভেরিয়েবল ব্যবহার করা হয়।response
পরিবর্তনশীল শুধুমাত্র প্রতিক্রিয়া প্রবাহে উপলব্ধ।যেহেতু অনুরোধের প্রবাহে
response
ভেরিয়েবলটি বিদ্যমান নেই, তাই আপনি ত্রুটি কোডটি পাবেন:steps.extractvariables.SourceMessageNotAvailable
।
রেজোলিউশন
নিশ্চিত করুন যে ব্যর্থ এক্সট্র্যাক্ট ভেরিয়েবল নীতির <Source>
উপাদানে সেট করা ভেরিয়েবলটি সংজ্ঞায়িত করা হয়েছে এবং নীতিটি কার্যকর করার প্রবাহে বিদ্যমান রয়েছে।
উপরে দেখানো উদাহরণ এক্সট্র্যাক্ট ভেরিয়েবল নীতি সংশোধন করতে, আপনি request
ভেরিয়েবল ব্যবহার করার জন্য <Source>
উপাদানটি পরিবর্তন করতে পারেন কারণ এটি অনুরোধের প্রবাহে বিদ্যমান:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
সেট ভেরিয়েবল ব্যর্থ
ত্রুটি কোড
steps.extractvariables.SetVariableFailed
ত্রুটি প্রতিক্রিয়া বডি
{ "fault": { "faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]", "detail": { "errorcode": "steps.extractvariables.SetVariableFailed" } } }
কারণ
এক্সট্র্যাক্ট ভেরিয়েবল নীতি একটি ভেরিয়েবলের মান সেট করতে না পারলে এই ত্রুটিটি ঘটে। এটি সাধারণত ঘটবে যদি আপনি একাধিক ভেরিয়েবলের মান নির্ধারণ করার চেষ্টা করেন যার নাম একটি নেস্টেড ডট-বিচ্ছিন্ন বিন্যাসে একই শব্দ দিয়ে শুরু হয়।
উদাহরণস্বরূপ, ধরা যাক আপনি একটি পরিবর্তনশীল var.color
এ একটি মান তৈরি/বরাদ্দ করেছেন। এই ক্ষেত্রে, color
একটি অবজেক্ট নোড হিসাবে বরাদ্দ করা হয়। তারপরে আপনি যদি অন্য একটি ভেরিয়েবল var.color.next
এ একটি মান নির্ধারণ করার চেষ্টা করেন তবে এটি ব্যর্থ হবে কারণ color
ইতিমধ্যেই বরাদ্দ করা হয়েছে এবং এটিতে অন্য একটি ভেরিয়েবল বরাদ্দ করার অনুমতি নেই৷
রোগ নির্ণয়
এক্সট্র্যাক্ট ভেরিয়েবল নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে এবং ভেরিয়েবলের নাম যার জন্য মান সেট করা যায়নি। আপনি ত্রুটি প্রতিক্রিয়ার
faultstring
উপাদানে এই দুটি আইটেম খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্ট স্ট্রিং-এ, নীতির নাম হলExtractColors
এবং ভেরিয়েবল হলvar.color.next
:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"
ব্যর্থ এক্সট্র্যাক্ট ভেরিয়েবল নীতি XML-এ, যাচাই করুন যে ভেরিয়েবলের নাম ফল্ট স্ট্রিং-এ চিহ্নিত ভেরিয়েবল নামের সাথে মেলে (উপরের ধাপ #1)। উদাহরণ স্বরূপ, নিম্নোক্ত নীতি
var.color.next
(যে মানটি ফল্ট স্ট্রিং দেখায়) নামক একটি ভেরিয়েবলে একটি অনুরোধ ক্যোয়ারী প্যারামিটার থেকে একটি মান নির্ধারণ করার চেষ্টা করে:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{color.next}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>
ব্যর্থ এক্সট্র্যাক্ট ভেরিয়েবল নীতিতে ব্যবহৃত সমস্ত পরিবর্তনশীল নাম পরীক্ষা করুন। আপনি যদি অন্য একটি ভেরিয়েবলের জন্য একটি মান নির্ধারণ করে থাকেন যার নামটি ফল্ট স্ট্রিং (উপরে ধাপ # 1) চিহ্নিত ভেরিয়েবল নামের একই নাম দিয়ে শুরু হয়, তাহলে এটি ত্রুটির কারণ।
উপরে দেখানো ভেরিয়েবল নীতির উদাহরণে, লক্ষ্য করুন যে:
-
color
নামের ক্যোয়ারী প্যারামিটারের মান প্রথমে একটি ভেরিয়েবলvar.color
এ বরাদ্দ করা হয়var.color
( দ্রষ্টব্য:var
হল<VariablePrefix>
উপাদানে সেট করা সমস্ত ভেরিয়েবলের উপসর্গ) - পরবর্তী অ্যাসাইনমেন্টে,
nextcolor
ক্যোয়ারী প্যারামিটারের মান অন্য একটি ভেরিয়েবলvar.color.next
এ বরাদ্দ করা হয়েছে। - যেহেতু
var.color
ইতিমধ্যেই বরাদ্দ করা হয়েছে, এক্সট্র্যাক্ট ভেরিয়েবল নীতি অন্য নেস্টেড ভেরিয়েবলvar.color.next
বরাদ্দ করতে পারে না। সুতরাং আপনি ত্রুটি কোড পাবেন:steps.extractvariables.SetVariableFailed
-
রেজোলিউশন
নিশ্চিত করুন যে আপনার একাধিক পরিবর্তনশীল নাম নেই যার নাম একই শব্দ দিয়ে শুরু হয় যা ডট-বিভাজিত বিন্যাসে নেস্ট করা হয়।
উপরে দেখানো এক্সট্র্যাক্ট ভেরিয়েবল নীতি সংশোধন করতে, আপনি পরিবর্তনশীল নাম
var.color.next
পরিবর্তন করতে পারেন পরিবর্তনশীল নামvar.nextcolor.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{nextcolor}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>
আরো তথ্য
আরো বিস্তারিত জানার জন্য এই সম্প্রদায় পোস্ট পড়ুন.
অবৈধ JSONPath
ত্রুটি কোড
steps.extractvariables.InvalidJSONPath
ত্রুটি প্রতিক্রিয়া বডি
{ "fault": { "faultstring": "Invalid JSON path [path_name] in policy [policy_name].", "detail": { "errorcode": "steps.extractvariables.InvalidJSONPath" } } }
কারণ
এক্সট্র্যাক্ট ভেরিয়েবল নীতির <JSONPath>
উপাদানে একটি অবৈধ JSON পাথ ব্যবহার করা হলে এই ত্রুটিটি ঘটে। উদাহরণস্বরূপ, যদি একটি JSON পেলোডে অবজেক্টের Name
না থাকে তবে আপনি এক্সট্রাক্ট ভেরিয়েবল নীতিতে পাথ হিসাবে Name
উল্লেখ করেন, তাহলে এই ত্রুটিটি ঘটে।
রোগ নির্ণয়
এক্সট্র্যাক্ট ভেরিয়েবল নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে এবং অবৈধ JSON পাথ। আপনি ত্রুটি প্রতিক্রিয়ার
faultstring
উপাদানে এই দুটি আইটেম খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্ট স্ট্রিং-এ, নীতির নাম হলExtractJSONVariables
এবং অবৈধ JSON পাথ হল$.Name
:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."
ব্যর্থ এক্সট্র্যাক্ট ভেরিয়েবল নীতি XML-এ,
<JSONPath>
উপাদানে সেট করা JSON পাথটি ফল্ট স্ট্রিং (উপরে ধাপ #1) চিহ্নিত পথের সাথে মেলে তা যাচাই করুন। উদাহরণস্বরূপ, নিম্নলিখিত এক্সট্র্যাক্ট ভেরিয়েবল নীতি JSON পাথ$.Name
নির্দিষ্ট করে, যা ফল্ট স্ট্রিং-এ যা আছে তার সাথে মেলে:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.Name</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables>
<Source>
উপাদান পরীক্ষা করুন এবং আপনি কোন JSON পেলোড থেকে ভেরিয়েবলটি বের করার চেষ্টা করছেন তা নির্ধারণ করুন। উদাহরণস্বরূপ, যদি<Source>
উপাদানটিrequest
সেট করা থাকে, তাহলে নীতি অনুরোধ অবজেক্ট থেকে JSON পেলোড বের করছে। যদি এটিresponse
সেট করা হয়, তাহলে এটি প্রতিক্রিয়া অবজেক্ট হবে।উপরে দেখানো এক্সট্র্যাক্ট ভেরিয়েবল নীতির উদাহরণে,
<Source>
উপাদানটিresponse
সেট করা হয়েছে, তাই ভেরিয়েবলগুলি প্রতিক্রিয়ার JSON পেলোড থেকে বের করা হচ্ছে।<Source>response</Source>
উপযুক্ত JSON পেলোড পরীক্ষা করুন (ধাপ #3 থেকে নির্ধারিত) এবং এটির
<JSONPath>
উপাদানে নির্দিষ্ট বস্তু আছে কিনা তা যাচাই করুন। যদি JSON পেলোডে সেই বস্তুটি না থাকে, তাহলে এটি ত্রুটির কারণ।একটি উদাহরণ হিসাবে, বিবেচনা করুন যে আপনি নিম্নলিখিত JSON প্রতিক্রিয়া পেলোড থেকে ভেরিয়েবলগুলি বের করার চেষ্টা করছেন:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }
যেহেতু JSON রেসপন্স পেলোডে
Name
অবজেক্ট নেই, তাই Extract Variables পলিসি আপনি যে ত্রুটির কোডটি পেয়েছেন তাতে ব্যর্থ হয়:steps.extractvariables.InvalidJSONPath
।
রেজোলিউশন
নিশ্চিত করুন যে JSON পেলোডের অংশ যেগুলি থেকে ভেরিয়েবলগুলি বের করা হচ্ছে তা এক্সট্র্যাক্ট ভেরিয়েবল নীতির
<JSONPath>
উপাদানে নির্দিষ্ট করা আছে।উপরে দেখানো উদাহরণ এক্সট্র্যাক্ট ভেরিয়েবল নীতি সংশোধন করতে, আপনি নমুনা JSON প্রতিক্রিয়া পেলোডে উপলব্ধ বস্তুগুলির একটি নির্দিষ্ট করতে
<JSONPath>
উপাদানটি সংশোধন করতে পারেন (উদাহরণস্বরূপ, অবজেক্টfirstName
এবংlastName
বৈধ):<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.firstName</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables>
কার্যকর করা ব্যর্থ হয়েছে৷
ত্রুটি কোড
steps.extractvariables.ExecutionFailed
ত্রুটি প্রতিক্রিয়া বডি
{ "fault": { "faultstring": "Failed to execute the ExtractVariables: [policy_name]", "detail": { "errorcode": "steps.extractvariables.ExecutionFailed" } } }
সম্ভাব্য কারণ
এই ত্রুটির সম্ভাব্য কারণগুলি হল:
কারণ | বর্ণনা |
অনুপস্থিত ইনপুট পেলোড | ইনপুট পেলোড (JSON, XML) খালি। |
অবৈধ বা বিকৃত ইনপুট | নীতিতে পাস করা ইনপুট (JSON, XML, ইত্যাদি) অবৈধ বা বিকৃত। |
কারণ: ইনপুট পেলোড অনুপস্থিত
যদি এক্সট্র্যাক্ট ভেরিয়েবল নীতিতে একটি JSON বা XML পেলোড থেকে ভেরিয়েবলগুলি বের করার কথা হয়, কিন্তু <Source>
উপাদানে নির্দিষ্ট করা ভেরিয়েবলের বিষয়বস্তু (পেলোড) খালি থাকে, তাহলে এই ত্রুটিটি ঘটে।
উদাহরণস্বরূপ, যদি এক্সট্র্যাক্ট ভেরিয়েবল নীতিতে <Source>
উপাদানটি request
বা response
হিসাবে সেট করা হয় এবং সেগুলিতে JSON বা XML পেলোড থাকার কথা, কিন্তু পেলোডটি খালি থাকে, তাহলে ত্রুটি ঘটে।
রোগ নির্ণয়
এক্সট্র্যাক্ট ভেরিয়েবল নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার ফল্টস্ট্রিং উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্টস্ট্রিং-এ, নীতির নাম হল
ExtractJSONVariables
:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"
ব্যর্থ এক্সট্র্যাক্ট ভেরিয়েবল XML-এ
<Source>
উপাদানটি পরীক্ষা করুন এবং ইনপুটের ধরন নির্ধারণ করুন যেখান থেকে ভেরিয়েবলগুলি বের করা হচ্ছে। উদাহরণ স্বরূপ, নিম্নলিখিত এক্সট্র্যাক্ট ভেরিয়েবল নীতিতে<Source>
এলিমেন্টresponse
সেট করা আছে এবং এক্সএমএল পেলোড থেকে ভেরিয়েবল বের করছে:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true"> <XMLPayload> <Namespaces/> <Variable name="City" type="string"> <XPath>/city</XPath> </Variable> </XMLPayload> <Source clearPayload="false">response</Source> </ExtractVariables>
এক্সট্র্যাক্ট ভেরিয়েবল নীতি দ্বারা পার্স করা ইনপুটটি খালি কিনা তা পরীক্ষা করুন। যদি ইনপুট খালি থাকে, তবে এটি ত্রুটির কারণ।
উপরে দেখানো এক্সট্র্যাক্ট ভেরিয়েবল নীতির উদাহরণে, ব্যাকএন্ড সার্ভার দ্বারা পাঠানো প্রতিক্রিয়া পেলোড (অর্থাৎ, প্রতিক্রিয়া বডি) খালি ছিল।
যেহেতু XML প্রতিক্রিয়া পেলোড খালি, আপনি ত্রুটি কোড পাবেন:
steps.extractvariables.ExecutionFailed
এই ত্রুটিটি ঘটতে পারে যদি
<Source>
উপাদানটিrequest
সেট করা থাকে, কিন্তু API প্রক্সি অনুরোধে কোনো পেলোড পাস করা হয় না। যেমন:curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"
Extract ভেরিয়েবল নীতি শুধুমাত্র XML নিষ্কাশন সম্পাদন করে যখন বার্তার
Content-Type
শিরোনাম হয়application/xml
,text/xml
বাapplication/*+xml
। আপনি যদি এক্সএমএল রিকোয়েস্ট পেলোড পার্স করতে এক্সট্র্যাক্ট ভেরিয়েবল নীতি চান তাহলে আপনাকে অবশ্যই কন্টেন্ট-টাইপ হেডারটিapplication/xml
,text/xml
বাapplication/*+xml
হিসেবে পাস করতে হবে।
রেজোলিউশন
নিশ্চিত করুন যে এক্সট্র্যাক্ট ভেরিয়েবল নীতিতে পাস করা ইনপুট বৈধ এবং খালি নয়।
উপরে দেখানো এক্সট্র্যাক্ট ভেরিয়েবল নীতির উদাহরণ দিয়ে সমস্যাটি সমাধান করতে, একটি বৈধ XML পেলোড পাস করুন। যেমন:
নিম্নলিখিত বিষয়বস্তু সহ
city.xml
নামে একটি ফাইল তৈরি করুন:<city>Bengaluru</city> <area>Sanjaynagar</area>
নিম্নরূপ একটি cURL কমান্ড ব্যবহার করে API কল করুন:
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
কারণ: অবৈধ বা বিকৃত ইনপুট
যদি এক্সট্র্যাক্ট ভেরিয়েবল নীতিটি ইনপুট পার্স করে যা অবৈধ বা ত্রুটিপূর্ণ, তাহলে আপনি এই ত্রুটিটি পাবেন।
উদাহরণ স্বরূপ, যদি Extract ভেরিয়েবল নীতিতে ইনপুট হিসাবে নিম্নলিখিত অবৈধ JSON প্রদান করা হয়, আপনি এই ত্রুটিটি পাবেন।
[
"args": ["name" : "amar" ]
]
রোগ নির্ণয়
এক্সট্র্যাক্ট ভেরিয়েবল নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার
faultstring
উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিতfaultstring
এ, নীতির নাম হলExtractJSONVariables
:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"
ব্যর্থ এক্সট্র্যাক্ট ভেরিয়েবল XML-এ
<Source>
উপাদানটি পরীক্ষা করুন এবং ইনপুটের ধরন নির্ধারণ করুন যেখান থেকে ভেরিয়েবলগুলি বের করা হচ্ছে। উদাহরণস্বরূপ, নিম্নলিখিত এক্সট্র্যাক্ট ভেরিয়েবল নীতিতেrequest
জন্য<Source>
উপাদান সেট করা আছে এবং JSON পেলোড থেকে ভেরিয়েবলগুলি বের করছে:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> </ExtractVariables>
এক্সট্র্যাক্ট ভেরিয়েবল নীতি দ্বারা পার্স করা ইনপুটটি বৈধ কিনা তা পরীক্ষা করুন৷ যদি ইনপুটটি অবৈধ বা বিকৃত হয়, তবে এটি ত্রুটির কারণ।
উপরে দেখানো এক্সট্র্যাক্ট ভেরিয়েবল নীতির উদাহরণে, নিম্নলিখিত অবৈধ JSON এক্সট্র্যাক্ট ভেরিয়েবল নীতিতে পাস করা হয়েছে
[ "args": ["name" : "amar" ] ]
এখানে নমুনা API কল যা দেখায় কিভাবে অনুরোধ পাস করা হয়েছে:
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
API-তে পাস করা JSON পেলোডটি অবৈধ কারণ এতে বর্গাকার বন্ধনী (
[ ]
) সহ একটি অ্যারে রয়েছে, তাই আপনি ত্রুটি কোডটি পাবেন:steps.extractvariables.ExecutionFailed
এই ত্রুটিটি ঘটতে পারে যদি
<Source>
উপাদানটিresponse
সেট করা থাকে কিন্তু JSON প্রতিক্রিয়া পেলোডটি অবৈধ বা বিকৃত হয়।
রেজোলিউশন
নিশ্চিত করুন যে এক্সট্র্যাক্ট ভেরিয়েবল নীতিতে পাস করা ইনপুটটি বৈধ এবং বিকৃত নয়।
উপরে আলোচনা করা এক্সট্র্যাক্ট ভেরিয়েবল নীতির উদাহরণ দিয়ে সমস্যাটি সমাধান করতে, নিম্নরূপ একটি বৈধ JSON পেলোড অনুরোধ পাস করুন:
{
"args":{
"name":"amar"
}
}
অক্ষম টোকাস্ট
ত্রুটি কোড
steps.extractvariables.UnableToCast
ত্রুটি প্রতিক্রিয়া বডি
{ "fault": { "faultstring": "Unable to cast value [value] as [type].", "detail": { "errorcode": "steps.extractvariables.UnableToCast" } } }
কারণ
এক্সট্র্যাক্ট ভেরিয়েবল নীতি একটি ভেরিয়েবলে নিষ্কাশন করা মান কাস্ট করতে অক্ষম হলে এই ত্রুটি ঘটে। সাধারণত এটি ঘটে যদি আপনি একটি ডেটা টাইপের মান অন্য ডেটা টাইপের ভেরিয়েবলে সেট করার চেষ্টা করেন।
উদাহরণস্বরূপ, যদি Extract ভেরিয়েবল নীতি একটি স্ট্রিং ভেরিয়েবল থেকে একটি পূর্ণসংখ্যা ভেরিয়েবলে বের করা হয়েছে এমন একটি মান সেট করার চেষ্টা করে, তাহলে আপনি এই ত্রুটিটি দেখতে পাবেন।
রোগ নির্ণয়
ভেরিয়েবলের ডেটা টাইপ সনাক্ত করুন যেটিতে এক্সট্র্যাক্ট ভেরিয়েবল নীতি কাস্ট করার চেষ্টা করছে এবং ব্যর্থ হয়েছে। আপনি ত্রুটি প্রতিক্রিয়ার
faultstring
উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিতfaultstring
এ, বস্তুর ধরনটি হলBOOLEAN
:"faultstring":"Unable to cast value 36.231 as BOOLEAN."
এক্সট্র্যাক্ট ভেরিয়েবল নীতিটি সনাক্ত করুন যেখানে আপনি ধাপ # 1 এ নির্ধারিত একটি ভেরিয়েবলের মান সেট করার চেষ্টা করছেন।
উদাহরণ স্বরূপ, নিম্নলিখিত এক্সট্র্যাক্ট ভেরিয়েবল নীতি JSONPath
$.latitude
থেকেboolean
টাইপের একটি ভেরিয়েবল থেকে মান বের করে, যা ফল্ট স্ট্রিং-এর সাথে মেলে:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="latitude" type="boolean"> <JSONPath>$.latitude</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">response</Source> </ExtractVariables>
যে মানটি বের করা হচ্ছে তার ডেটা টাইপ পরীক্ষা করুন। ডেটা হেডার, URI পাথ, JSON/XML পেলোড, ফর্ম প্যারামিটার এবং কোয়েরি প্যারামিটারের আকারে হতে পারে।
ধাপ #3 তে নির্ধারিত ডেটা টাইপ এবং যে ভেরিয়েবলের ডেটা বরাদ্দ করা হচ্ছে তার ডেটা টাইপ (ধাপ #2 এ নির্ধারিত) একই কিনা তা যাচাই করুন।
যদি উৎস এবং গন্তব্য ভেরিয়েবলের ডেটা টাইপ একই না হয়, তবে এটি ত্রুটির কারণ।
উপরে দেখানো এক্সট্র্যাক্ট ভেরিয়েবল নীতির উদাহরণে, JSON অনুরোধের পেলোডটি নিম্নরূপ বিবেচনা করুন:
{ "latitude":36.2312 }
<JSONPath>
,'$.latitude'
থেকে যে মানের ডেটা টাইপ বের করা হচ্ছে তা হল একটি পূর্ণসংখ্যা, যা ডেটা টাইপ বুলিয়ানের একটি ভেরিয়েবলে বরাদ্দ করা হচ্ছে।যেহেতু এক্সট্র্যাক্ট করা মানের ডেটা টাইপ এবং ভেরিয়েবলের ডেটা টাইপ যেটিতে মানটি বরাদ্দ করা হচ্ছে একই নয়, আপনি ত্রুটি কোডটি পাবেন:
steps.extractvariables.UnableToCast
।
রেজোলিউশন
নিশ্চিত করুন যে নিষ্কাশিত মানের ডেটা টাইপ এবং কন্টেন্ট বরাদ্দ করা ভেরিয়েবল একই ধরনের।
এক্সট্র্যাক্ট ভেরিয়েবল নীতির উদাহরণ সংশোধন করতে, আপনাকে ভেরিয়েবলের ধরনটি পূর্ণসংখ্যাতে পরিবর্তন করতে হবে:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="latitude" type="integer">
<JSONPath>$.latitude</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response</Source>
</ExtractVariables>
JsonPathParsing ব্যর্থতা
ত্রুটি কোড
steps.extractvariables.JsonPathParsingFailure
ত্রুটি প্রতিক্রিয়া বডি
{ "fault": { "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]", "detail": { "errorcode": "steps.extractvariables.JsonPathParsingFailure" } } }
কারণ
এই ত্রুটিটি ঘটে যখন এক্সট্র্যাক্ট ভেরিয়েবল নীতি JSON পাথ পার্স করতে এবং <Source>
উপাদানে নির্দিষ্ট করা ফ্লো ভেরিয়েবল থেকে ডেটা বের করতে অক্ষম হয়। সাধারণত এটি ঘটে যদি <Source>
উপাদানে নির্দিষ্ট করা ফ্লো ভেরিয়েবল বর্তমান প্রবাহে বিদ্যমান না থাকে।
উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি এক্সট্র্যাক্ট ভেরিয়েবল নীতিটি প্রতিক্রিয়া প্রবাহে সঞ্চালিত হয় এবং একটি JSON পাথ পার্স করার আশা করে, কিন্তু <Source>
উপাদানটি ফ্লো ভেরিয়েবল request.content
বিষয়বস্তু নির্দিষ্ট করে, যা প্রতিক্রিয়া প্রবাহে বিদ্যমান নেই।
রোগ নির্ণয়
এক্সট্র্যাক্ট ভেরিয়েবল নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে এবং ফ্লো ভেরিয়েবলের নাম যেখানে ডেটা বের করা যায়নি। আপনি ত্রুটি প্রতিক্রিয়ার ফল্টস্ট্রিং উপাদানে এই দুটি আইটেম খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্টস্ট্রিং-এ, নীতির নাম হল
ExtractVariables-1
এবং ভেরিয়েবল হলrequest.content
:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"
ব্যর্থ এক্সট্র্যাক্ট ভেরিয়েবল নীতি XML-এ, যাচাই করুন যে
<Source>
উপাদানে সেট করা ভেরিয়েবলের নাম ফল্ট স্ট্রিং-এ চিহ্নিত পরিবর্তনশীল নামের সাথে মেলে (উপরের ধাপ #1)। উদাহরণ স্বরূপ, নিম্নলিখিত এক্সট্র্যাক্ট ভেরিয়েবল নীতিটিrequest.content
নামের একটি ভেরিয়েবল নির্দিষ্ট করে, যা ফল্টস্ট্রিং-এ যা আছে তার সাথে মেলে:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request.content</Source> </ExtractVariables>
যাচাই করুন যদি
<Source>
উপাদানে ব্যবহৃত ফ্লো ভেরিয়েবলটি সংজ্ঞায়িত করা হয় এবং যে প্রবাহে এক্সট্র্যাক্ট ভেরিয়েবল নীতি কার্যকর করা হয় সেখানে উপলব্ধ।যদি পরিবর্তনশীল হয়:
- সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
- সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)
তাহলে এটি ত্রুটির কারণ।
উদাহরণ হিসেবে, ধরা যাক উপরে দেখানো ExtractVariables পলিসি রেসপন্স ফ্লোতে কার্যকর করার কথা। প্রত্যাহার করুন যে প্রবাহ পরিবর্তনশীল
request.content
এক্সট্র্যাক্ট ভেরিয়েবল নীতির<Source>
উপাদানে ব্যবহৃত হয়। ফ্লো ভেরিয়েবলrequest.content
শুধুমাত্র রিকোয়েস্ট ফ্লোতে পাওয়া যায়।যেহেতু অনুরোধের প্রবাহে
response
ভেরিয়েবলটি বিদ্যমান নেই, আপনি ত্রুটি কোডটি পাবেন:steps.extractvariables.JsonPathParsingFailure
।
রেজোলিউশন
নিশ্চিত করুন যে এক্সট্র্যাক্ট ভেরিয়েবল নীতির <Source>
উপাদানটিতে ব্যবহৃত ফ্লো ভেরিয়েবলটি যে প্রবাহে এক্সট্র্যাক্ট ভেরিয়েবল নীতি কার্যকর করে সেখানে উপলব্ধ রয়েছে।
উদাহরণস্বরূপ, অনুমান করুন যে প্রতিক্রিয়া প্রবাহে একটি ভেরিয়েবল নামে একটি response.content
বিদ্যমান রয়েছে এবং প্রকৃতপক্ষে আপনি যে JSONটি বের করতে চান তা রয়েছে৷ উপরে দেখানো এক্সট্র্যাক্ট ভেরিয়েবল নীতি সংশোধন করতে, আপনি <Source>
উপাদানটিকে নিম্নরূপ পরিবর্তন করতে পারেন:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="Name" type="string">
<JSONPath>$.args.name</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response.content</Source>
</ExtractVariables>