আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
SOAPMessageValidation পলিসিটি নিম্নলিখিত কাজগুলো করে:
- যেকোনো XML বার্তাকে তাদের XSD স্কিমার সাথে মিলিয়ে যাচাই করে।
- একটি WSDL সংজ্ঞার সাথে SOAP বার্তাগুলি যাচাই করে।
- JSON এবং XML বার্তাগুলির সুগঠন নির্ধারণ করে
যদিও UI-তে এই পলিসিটির নাম "SOAP Message Validation", এটি শুধু SOAP মেসেজের চেয়েও বেশি কিছু ভ্যালিডেট করে। এই বিভাগে পলিসিটিকে "Message Validation policy" হিসেবে উল্লেখ করা হয়েছে।
<MessageValidation> উপাদান
বার্তা যাচাইকরণ নীতি নির্ধারণ করে।
| ডিফল্ট মান | নিচে ডিফল্ট পলিসি ট্যাবটি দেখুন। |
| প্রয়োজন? | ঐচ্ছিক |
| প্রকার | জটিল বস্তু |
| মূল উপাদান | প্রযোজ্য নয় |
| শিশু উপাদান | <DisplayName><Element><ResourceURL><SOAPMessage><Source> |
সিনট্যাক্স
<MessageValidation> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
<MessageValidation
continueOnError="[false|true]"
enabled="[true|false]"
name="policy_name"
>
<!-- All MessageValidation child elements are optional -->
<DisplayName>policy_display_name</DisplayName>
<Element namespace="element_namespace">element_to_validate</Element>
<SOAPMessage version="[ 1.1 | 1.2 | 1.1/1.2 ]"/>
<Source>message_to_validate</Source>
<ResourceURL>validation_WSDL_or_XSD</ResourceURL>
</MessageValidation>ডিফল্ট নীতি
নিম্নলিখিত উদাহরণটি এজ UI-তে আপনার ফ্লো-তে একটি মেসেজ ভ্যালিডেশন পলিসি যোগ করার সময় ডিফল্ট সেটিংস দেখায়:
<MessageValidation continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <Element namespace="http://sample.com">sampleObject</Element> <SOAPMessage/> <Source>request</Source> <ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL> </MessageValidation>
এই উপাদানটির নিম্নলিখিত বৈশিষ্ট্যগুলি রয়েছে যা সমস্ত নীতিতে সাধারণ:
| বৈশিষ্ট্য | ডিফল্ট | প্রয়োজন? | বর্ণনা |
|---|---|---|---|
name | N/A | প্রয়োজন | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে |
continueOnError | মিথ্যা | ঐচ্ছিক | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে "false" এ সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ। একটি নীতি ব্যর্থ হওয়ার পরেও প্রবাহ সম্পাদন অব্যাহত রাখতে "সত্য" তে সেট করুন৷ |
enabled | সত্য | ঐচ্ছিক | নীতি প্রয়োগ করতে "সত্য" এ সেট করুন। নীতিটি "বন্ধ" করতে "মিথ্যা" এ সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না। |
async | মিথ্যা | অবচয় | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ |
উদাহরণ
নিম্নলিখিত উদাহরণগুলিতে মেসেজ ভ্যালিডেশন পলিসি ব্যবহারের কয়েকটি উপায় দেখানো হয়েছে:
১: XSD বৈধতা
আপনি একটি XSD স্কিমার সাথে XML মেসেজ রিকোয়েস্টের পেলোড যাচাই করার জন্য মেসেজ ভ্যালিডেশন পলিসি ব্যবহার করতে পারেন।
- একটি নতুন XSD রিসোর্স ফাইল তৈরি করুন। উদাহরণস্বরূপ, 'note-schema.xsd':
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
- আপনার প্রক্সি এন্ডপয়েন্টের প্রি-ফ্লোতে SOAP মেসেজ ভ্যালিডেশন পলিসিটি যোগ করুন:
-
<ResourceURL>এলিমেন্ট ব্যবহার করে আপনার XSD রিসোর্স ফাইলের অবস্থান নির্দিষ্ট করুন। উদাহরণস্বরূপ:... <ResourceURL>xsd://note-schema.xsd</ResourceURL> ...
- পলিসি সংজ্ঞা থেকে
<SOAPMessage>এবং<Element>উপাদানগুলো সরিয়ে ফেলুন।
আপনার পলিসির সংজ্ঞাটি নিম্নলিখিতের অনুরূপ হওয়া উচিত:
<MessageValidation continueOnError="false" enabled="true" name="validateXMLRequest"> <DisplayName>My XML Validator</DisplayName> <Properties/> <Source>request</Source> <ResourceURL>xsd://note-schema.xsd</ResourceURL> </MessageValidation> -
- নিম্নলিখিত উদাহরণে যেমন দেখানো হয়েছে, আপনার XML-কে মেসেজ পেলোড হিসেবে ব্যবহার করে আপনার API প্রক্সিতে একটি
POSTরিকোয়েস্ট পাঠান:curl -v -X POST -H 'Content-Type: application/xml' http://my-test.apigee.net/v1/xsd-mock -d '<note> <to>Fred Rogers</to> <from>Nick Danger</from> <heading>Greetings from my neighborhood</heading> <body>Just writing to say hello.</body> </note>'
লক্ষ্য করুন যে
Content-typeহেডারটি "application/xml" হিসেবে সেট করা আছে।এছাড়াও আপনি পেলোডের জন্য একটি ডেটা ফাইল তৈরি করতে পারেন এবং নিম্নলিখিতের মতো একটি কমান্ডের মাধ্যমে সেটিকে রেফারেন্স করতে পারেন:
curl -v -X POST -H 'Content-type: application/xml' http://my-test.apigee.net/v1/xsd-mock --data '@../examples/note-payload.xml'
আপনি একটি HTTP 200 রেসপন্স পাবেন। আপনার টার্গেট এন্ডপয়েন্টের উপর নির্ভর করে, আপনি রিকোয়েস্টটি সম্পর্কে অতিরিক্ত বিবরণ পেতে পারেন। উদাহরণস্বরূপ, যদি আপনি আপনার টার্গেট এন্ডপয়েন্ট হিসেবে http://httpbin.org/post ব্যবহার করেন এবং -v (ভার্বোস) আউটপুট নির্দিষ্ট করেন, তাহলে রেসপন্সটি নিম্নলিখিতের মতো হবে:
< HTTP/1.1 200 OK < Date: Wed, 16 May 2018 21:24:54 GMT < Content-Type: application/xml < Content-Length: 431 < Connection: keep-alive < Server: gunicorn/19.8.1 < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: true < Via: 1.1 vegur { "args":{}, "data":"<note><to>fred</to><from>nick</from><heading>hello</heading> <body>Just writing to say hello.</body></note>", "files":{}, "form":{}, "headers": { "Accept":"*/*", "Connection":"close", "Content-Length":"106", "Content-Type":"application/xml", "Host":"httpbin.org", "User-Agent":"curl/7.58.0" }, "json":null, "origin":"10.1.1.1, 104.154.179.1", "url":"http://httpbin.org/post" }
আপনার XSD ভ্যালিডেশন ঠিকমতো কাজ করছে কিনা তা যাচাই করতে, আপনার রিকোয়েস্টের বডিতে আরেকটি ট্যাগ যোগ করার চেষ্টা করুন। উদাহরণস্বরূপ:
curl -v -X POST -H 'Content-Type: application/xml' http://my-test.apigee.net/v1/xsd-mock -d '<note> <to>Fred Rogers</to> <from>Nick Danger</from> <heading>Greetings from my neighborhood</heading> <body>Just writing to say hello.</body> <badTag>Not good</badTag> </note>'
আপনি একটি যাচাইকরণ ত্রুটি পাবেন।
২: SOAP বৈধতা
আপনি মেসেজ ভ্যালিডেশন পলিসি ব্যবহার করে একটি WSDL-এর সাথে SOAP মেসেজ রিকোয়েস্টের পেলোড যাচাই করতে পারেন।
- একটি নতুন WSDL রিসোর্স ফাইল তৈরি করুন। উদাহরণস্বরূপ, 'example-wsdl.wsdl':
- আপনার প্রক্সি এন্ডপয়েন্টের প্রি-ফ্লোতে SOAP মেসেজ ভ্যালিডেশন পলিসিটি যোগ করুন:
-
<SOAPMessage>এলিমেন্টেরversionঅ্যাট্রিবিউটে আপনি যে SOAP প্রোটোকলের ভার্সনটি যাচাই করতে চান, তা সেট করুন। উদাহরণস্বরূপ, "1.1":... <SOAPMessage version="1.1"/> ...
- যে এলিমেন্টটি আপনি ভ্যালিডেট করতে চান, সেটির মান
<Element>এলিমেন্টের ভ্যালুতে সেট করুন:... <Element namespace="https://example.com/gateway">getID</Element> ...
<Element>SOAP অনুরোধের এনভেলপে থাকা<Body>এলিমেন্টের অধীনস্থ প্রথম চাইল্ডকে নির্দিষ্ট করে।namespaceঅ্যাট্রিবিউটটিকে সেই চাইল্ডের নেমস্পেসে সেট করুন। -
<ResourceURL>এলিমেন্ট ব্যবহার করে আপনার WSDL রিসোর্স ফাইলের অবস্থান নির্দিষ্ট করুন। উদাহরণস্বরূপ:... <ResourceURL>wsdl://example-wsdl.wsdl</ResourceURL> ...
আপনার পলিসির সংজ্ঞাটি নিম্নলিখিতের অনুরূপ হওয়া উচিত:
<MessageValidation continueOnError="false" enabled="true" name="validateSOAPRequest"> <DisplayName>My SOAP Validator</DisplayName> <Properties/> <Source>request</Source> <SOAPMessage version="1.1"/> <Element namespace="https://example.com/gateway">getID</Element> <ResourceURL>wsdl://example-wsdl.wsdl</ResourceURL> </MessageValidation> -
- নিম্নলিখিত উদাহরণে যেমন দেখানো হয়েছে, মেসেজ পেলোড হিসাবে SOAP এনভেলপ ব্যবহার করে আপনার API প্রক্সিতে একটি
POSTঅনুরোধ পাঠান:curl -v -X POST -H 'Content-Type: application/xml' http://my-test.apigee.net/v1/xsd-mock -d '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prox="https://example.com/gateway" xmlns:typ="https://example.com/gateway/types"> <soapenv:Header/> <soapenv:Body> <prox:getID> <typ:MyType> <typ:ID>42</typ:ID> </typ:MyType> </prox:getID> </soapenv:Body> </soapenv:Envelope>'
লক্ষ্য করুন যে
Content-typeহেডারটি "application/xml" হিসেবে সেট করা আছে।এছাড়াও আপনি পেলোডের জন্য একটি ডেটা ফাইল তৈরি করতে পারেন এবং নিম্নলিখিতের মতো একটি কমান্ডের মাধ্যমে সেটিকে রেফারেন্স করতে পারেন:
curl -v -X POST -H 'Content-type: application/xml' http://my-test.apigee.net/v1/xsd-mock --data '@../examples/soap-payload.xml'
আপনি একটি HTTP 200 রেসপন্স পাবেন। আপনার টার্গেট এন্ডপয়েন্টের উপর নির্ভর করে, আপনি রিকোয়েস্টটি সম্পর্কে অতিরিক্ত বিবরণ পেতে পারেন। উদাহরণস্বরূপ, যদি আপনি আপনার টার্গেট এন্ডপয়েন্ট হিসেবে http://httpbin.org/post ব্যবহার করেন, তাহলে রেসপন্সটি নিম্নলিখিতের মতো হবে:
< HTTP/1.1 200 OK < Date: Wed, 16 May 2018 21:24:54 GMT < Content-Type: application/xml < Content-Length: 431 < Connection: keep-alive < Server: gunicorn/19.8.1 < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: true < Via: 1.1 vegur { "args":{}, "data":"<note><to>fred</to><from>nick</from><heading>hello</heading> <body>Just writing to say hello.</body></note>", "files":{}, "form":{}, "headers": { "Accept":"*/*", "Connection":"close", "Content-Length":"106", "Content-Type":"application/xml", "Host":"httpbin.org", "User-Agent":"curl/7.58.0" }, "json":null, "origin":"10.1.1.1, 104.154.179.1", "url":"http://httpbin.org/post" }
৩: সুগঠিত XML/JSON
একটি JSON বা XML মেসেজ পেলোড সুগঠিত কিনা তা নিশ্চিত করতে আপনি মেসেজ ভ্যালিডেশন পলিসি ব্যবহার করতে পারেন (এটি ভ্যালিডেশনের মতো নয়)। এই পলিসি নিশ্চিত করে যে এর গঠন এবং বিষয়বস্তু স্বীকৃত মানদণ্ড পূরণ করে, যার মধ্যে অন্তর্ভুক্ত রয়েছে:
- একটিমাত্র মূল উপাদান আছে
- বিষয়বস্তুতে কোনো অবৈধ অক্ষর নেই।
- অবজেক্ট এবং ট্যাগগুলো যথাযথভাবে নেস্ট করা হয়েছে।
- শুরু এবং শেষের ট্যাগ ম্যাচ
একটি সুগঠিত XML বা JSON পেলোড যাচাই করতে:
- আপনার প্রক্সি এন্ডপয়েন্টের প্রি-ফ্লোতে SOAP মেসেজ ভ্যালিডেশন পলিসিটি যোগ করুন।
- পলিসি সংজ্ঞা থেকে
<ResourceURL>,<SOAPMessage>এবং<Element>উপাদানগুলো সরিয়ে ফেলুন।আপনার পলিসির সংজ্ঞাটি নিম্নলিখিতের অনুরূপ হওয়া উচিত:
<MessageValidation async="false" continueOnError="false" enabled="true" name="validateXMLRequest"> <DisplayName>My JSON Checker</DisplayName> <Properties/> <Source>request</Source> </MessageValidation> - আপনার এপিআই প্রক্সিতে একটি
POSTঅনুরোধ পাঠান, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:curl -v -X POST -H 'Content-Type: application/json' http://my-test.apigee.net/v1/xsd-mock -d '{ "note": { "to": "Fred Rogers", "from": "Nick Danger", "header": "Greetings from my neighborhood", "body": "Just writing to say hello." } }'লক্ষ্য করুন যে
Content-typeহেডারটি 'application/json'-এ সেট করা আছে।একটি XML ফাইলের গঠনগত ত্রুটি যাচাই করতে, মেসেজ পেলোড হিসেবে XML ব্যবহার করুন এবং
Content-type"application/xml"-এ সেট করুন।
আপনি একটি HTTP 200 প্রতিক্রিয়া পাবেন। যখন আপনি এমন একটি বার্তা পেলোড পাঠান যাতে সুগঠিত XML বা JSON থাকে না, তখন আপনি একটি steps.messagevalidation.Failed ত্রুটি পাবেন।
চাইল্ড এলিমেন্ট রেফারেন্স
এই অংশে <MessageValidation> এর চাইল্ড এলিমেন্টগুলো বর্ণনা করা হয়েছে।
<DisplayName>
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, আরও স্বাভাবিক-শব্দযুক্ত নামের সাথে লেবেল করতে name বৈশিষ্ট্যের পাশাপাশি ব্যবহার করুন৷
<DisplayName> উপাদানটি সকল নীতিতে সাধারণ।
| ডিফল্ট মান | n/a |
| প্রয়োজন? | ঐচ্ছিক। আপনি <DisplayName> বাদ দিলে, নীতির name বৈশিষ্ট্যের মান ব্যবহার করা হয় |
| টাইপ | স্ট্রিং |
| অভিভাবক উপাদান | < PolicyElement > |
| শিশু উপাদান | কোনোটিই নয় |
<DisplayName> উপাদানটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
সিনট্যাক্স
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
উদাহরণ
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
<DisplayName> উপাদানটির কোনো বৈশিষ্ট্য বা শিশু উপাদান নেই।
<Element>
মেসেজের যে এলিমেন্টটি ভ্যালিডেট করতে হবে, তা নির্দিষ্ট করে। এটি SOAP রিকোয়েস্টের এনভেলপে থাকা <Body> এলিমেন্টের অধীনে প্রথম চাইল্ড।
| ডিফল্ট মান | নমুনা বস্তু |
| প্রয়োজন? | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| মূল উপাদান | <MessageValidation> |
| শিশু উপাদান | কোনোটিই না |
<Element> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
সিনট্যাক্স
... <Element namespace="element_namespace">element_to_validate</Element> ...
উদাহরণ ১
নিম্নলিখিত উদাহরণটি যাচাই করার জন্য একটি একক উপাদানকে সংজ্ঞায়িত করে:
... <Element namespace="https://example.com/gateway">getID</Element> ...
উদাহরণ ২
আপনি একাধিক <Element> এলিমেন্ট যোগ করে ভ্যালিডেট করার জন্য একাধিক এলিমেন্ট নির্দিষ্ট করতে পারেন:
... <Element namespace="https://example.com/gateway">getID</Element> <Element namespace="https://example.com/gateway">getDetails</Element> ...
<Element> এলিমেন্টটির নিম্নলিখিত অ্যাট্রিবিউটগুলো রয়েছে:
| বৈশিষ্ট্য | ডিফল্ট | প্রয়োজন? | বর্ণনা |
|---|---|---|---|
namespace | "http://sample.com" | ঐচ্ছিক | যে এলিমেন্টটি যাচাই করা হবে তার নেমস্পেস নির্ধারণ করে। |
<ResourceURL>
উৎস বার্তাটি যাচাই করার জন্য ব্যবহৃত XSD স্কিমা বা WSDL সংজ্ঞা শনাক্ত করে।
| ডিফল্ট মান | wsdl:// display_name .wsdl |
| প্রয়োজন? | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| মূল উপাদান | <MessageValidation> |
| শিশু উপাদান | কোনোটিই না |
<ResourceURL> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
সিনট্যাক্স
... <ResourceURL>[wsdl|xsd]://validation_WSDL_or_XSD</ResourceURL> ...
উদাহরণ
একটি XML ফাইলের জন্য:
... <ResourceURL>xsd://note-schema.xsd</ResourceURL> ...
একটি WSDL-এর জন্য:
... <ResourceURL>wsdl://example-wsdl.wsdl</ResourceURL> ...
<ResourceURL> এর মান অবশ্যই আপনার এপিআই প্রক্সিতে থাকা একটি রিসোর্স ফাইলকে নির্দেশ করবে। এটি HTTP বা HTTPS-এর মাধ্যমে কোনো বাহ্যিক রিসোর্সকে নির্দেশ করতে পারবে না।
আপনি <ResourceURL> এর জন্য কোনো মান নির্দিষ্ট না করলে, Content-type হেডারটি যথাক্রমে 'application/json' বা 'application/xml' হলে বার্তাটি সুগঠিত JSON বা XML কিনা তা পরীক্ষা করা হয়।
<ResourceURL> এলিমেন্টের কোনো চাইল্ড এলিমেন্ট বা অ্যাট্রিবিউট নেই।
যাচাইকরণের জন্য XSD ব্যবহার করা
আপনি মেসেজ ভ্যালিডেশন পলিসি দিয়ে যে XML পেলোডটি ভ্যালিডেট করেন, সেটি যদি অন্য কোনো স্কিমাকে রেফারেন্স করে, তাহলে অন্তর্ভুক্ত XSD ফাইলের schemaLocation অ্যাট্রিবিউটে আপনাকে অবশ্যই xsd দিয়ে প্রিফিক্স করতে হবে।
নিম্নলিখিত উদাহরণ স্কিমাটি একাধিক XSD দ্বারা গঠিত:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="xsd://note-schema.xsd"/>
<xs:include schemaLocation="xsd://letter-schema.xsd"/>
<xs:include schemaLocation="xsd://user-schema.xsd"/>
</xs:schema>যাচাইকরণের জন্য WSDL ব্যবহার করা
একটি WSDL-এ অবশ্যই অন্তত একটি স্কিমা সংজ্ঞায়িত থাকতে হবে। যদি এটি অন্তত একটি স্কিমার উল্লেখ না করে, তাহলে মেসেজ ভ্যালিডেশন পলিসি ব্যর্থ হয়।
একটি স্কিমার জন্য সর্বোচ্চ ইম্পোর্ট ডেপথ হলো ১০। যদি আপনি এই সংখ্যার চেয়ে বেশি নেস্টেড ইম্পোর্ট করেন, তাহলে মেসেজ ভ্যালিডেশন পলিসিটি ব্যর্থ হয়।
<SOAPMessage>
এটি সেই SOAP সংস্করণটিকে সংজ্ঞায়িত করে, যার ভিত্তিতে বার্তা যাচাইকরণ নীতিটি যাচাই করে।
| ডিফল্ট মান | প্রযোজ্য নয় |
| প্রয়োজন? | ঐচ্ছিক |
| প্রকার | প্রযোজ্য নয় |
| মূল উপাদান | <MessageValidation> |
| শিশু উপাদান | কোনোটিই না |
<SOAPMessage> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
সিনট্যাক্স
... <SOAPMessage version="[ 1.1 | 1.2 | 1.1/1.2 ]"/> ...
উদাহরণ
... <SOAPMessage version="1.1"/> ...
<SOAPMessage> এলিমেন্টটির নিম্নলিখিত অ্যাট্রিবিউটগুলো রয়েছে:
| বৈশিষ্ট্য | ডিফল্ট | প্রয়োজন? | বর্ণনা |
|---|---|---|---|
version | কোনোটিই না | ঐচ্ছিক | এই পলিসিটি SOAP মেসেজ যাচাই করার জন্য যে SOAP ভার্সনটি ব্যবহার করে। বৈধ মানগুলি হলো:
|
আরও তথ্যের জন্য, “From SOAP/1.1 to SOAP Version 1.2 in 9 points” দেখুন।
<Source>
যাচাই করার জন্য উৎস বার্তাটি শনাক্ত করে। এই এলিমেন্টের মান হলো সেই বার্তার নাম যা আপনি যাচাই করতে চান।
আপনি যদি <Source> সেট না করেন, তাহলে এই পলিসিটি ডিফল্টরূপে "message" হিসেবে সেট হয়, যা যেকোনো পেলোড সহ সম্পূর্ণ অনুরোধ বার্তা (একটি অনুরোধ ফ্লো-তে) বা প্রতিক্রিয়া বার্তা (একটি প্রতিক্রিয়া ফ্লো-তে) বোঝায়। অনুরোধ বা প্রতিক্রিয়া বোঝানোর জন্য আপনি এটিকে স্পষ্টভাবে "request" বা "response" হিসেবেও সেট করতে পারেন।
| ডিফল্ট মান | অনুরোধ |
| প্রয়োজন? | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| মূল উপাদান | <MessageValidation> |
| শিশু উপাদান | কোনোটিই না |
<Source> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
সিনট্যাক্স
... <Source>message_to_validate</Source> ...
উদাহরণ
... <Source>request</Source> ...
'message', 'request', এবং 'response' ছাড়াও, আপনি <Source> এর মান আপনার ফ্লো-এর যেকোনো মেসেজের নামে সেট করতে পারেন। তবে, যদি আপনি এটি করেন, তাহলে এই পলিসিটি কার্যকর হওয়ার আগে আপনাকে অবশ্যই আপনার ফ্লো-তে সেই নামে একটি কাস্টম মেসেজ তৈরি করতে হবে। অন্যথায়, আপনি একটি এরর পাবেন।
যদি মেসেজ ফ্লোতে <Source> এর মান নির্ণয় করা না যায় অথবা এটি কোনো নন-মেসেজ টাইপে পরিণত হয়, তাহলে নিম্নলিখিত ঘটনাগুলোর মধ্যে একটি ঘটে:
- মান null হলে Edge একটি
steps.messagevalidation.SourceMessageNotAvailableerror দেখায়। - যদি ডেটা টাইপটি মেসেজ না হয়, তাহলে Edge একটি
steps.messagevalidation.NonMessageVariableএরর দেখায়।
<Source> এলিমেন্টটির কোনো অ্যাট্রিবিউট বা চাইল্ড এলিমেন্ট নেই।
ত্রুটি কোড
এজ পলিসি থেকে প্রাপ্ত ত্রুটিগুলি 'ত্রুটি কোড রেফারেন্স' -এ বর্ণিত একটি সামঞ্জস্যপূর্ণ বিন্যাস অনুসরণ করে।
এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | ঠিক করুন |
|---|---|---|---|
steps.messagevalidation.SourceMessageNotAvailable | 500 | এই ত্রুটিটি ঘটে যদি নীতির
| build |
steps.messagevalidation.NonMessageVariable | 500 | এই ত্রুটিটি ঘটবে যদি SOAPMessageValidation পলিসিতে মেসেজ টাইপ ভেরিয়েবল সম্পূর্ণ HTTP অনুরোধ এবং প্রতিক্রিয়া উপস্থাপন করে। বিল্ট-ইন এজ ফ্লো ভেরিয়েবল | build |
steps.messagevalidation.Failed | 500 | এই ত্রুটিটি ঘটে যদি SOAPMessageValidation নীতি XSD স্কিমা বা WSDL সংজ্ঞার বিপরীতে ইনপুট বার্তা পেলোড যাচাই করতে ব্যর্থ হয়। পেলোড বার্তায় ত্রুটিপূর্ণ JSON বা XML থাকলে এটিও ঘটবে। | build |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | কারণ | ঠিক করুন |
|---|---|---|
InvalidResourceType | SOAPMessageValidation নীতিতে <ResourceURL> উপাদানটি একটি সম্পদের ধরণে সেট করা হয়েছে যা নীতি দ্বারা সমর্থিত নয়। | build |
ResourceCompileFailed | SOAPMessageValidation নীতির <ResourceURL> উপাদানে উল্লেখ করা রিসোর্স স্ক্রিপ্টে একটি ত্রুটি রয়েছে যা এটিকে কম্পাইল করা থেকে বাধা দেয়। | build |
RootElementNameUnspecified | SOAPMessageValidation নীতির <Element> এলিমেন্টে রুট এলিমেন্টের নাম নেই। | build |
InvalidRootElementName | SOAPMessageValidation নীতির <Element> উপাদানটিতে একটি মূল উপাদানের নাম রয়েছে যা বৈধ উপাদান নামকরণের জন্য XML নিয়ম মেনে চলে না। | build |
এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | ঠিক করুন |
|---|---|---|---|
steps.messagevalidation.SourceMessageNotAvailable | 500 | এই ত্রুটিটি ঘটে যদি নীতির
| build |
steps.messagevalidation.NonMessageVariable | 500 | এই ত্রুটিটি ঘটবে যদি SOAPMessageValidation পলিসিতে মেসেজ টাইপ ভেরিয়েবল সম্পূর্ণ HTTP অনুরোধ এবং প্রতিক্রিয়া উপস্থাপন করে। বিল্ট-ইন এজ ফ্লো ভেরিয়েবল | build |
steps.messagevalidation.Failed | 500 | এই ত্রুটিটি ঘটে যদি SOAPMessageValidation নীতি XSD স্কিমা বা WSDL সংজ্ঞার বিপরীতে ইনপুট বার্তা পেলোড যাচাই করতে ব্যর্থ হয়। পেলোড বার্তায় ত্রুটিপূর্ণ JSON বা XML থাকলে এটিও ঘটবে। | build |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | কারণ | ঠিক করুন |
|---|---|---|
InvalidResourceType | SOAPMessageValidation নীতিতে <ResourceURL> উপাদানটি একটি সম্পদের ধরণে সেট করা হয়েছে যা নীতি দ্বারা সমর্থিত নয়। | build |
ResourceCompileFailed | SOAPMessageValidation নীতির <ResourceURL> উপাদানে উল্লেখ করা রিসোর্স স্ক্রিপ্টে একটি ত্রুটি রয়েছে যা এটিকে কম্পাইল করা থেকে বাধা দেয়। | build |
RootElementNameUnspecified | SOAPMessageValidation নীতির <Element> এলিমেন্টে রুট এলিমেন্টের নাম নেই। | build |
InvalidRootElementName | SOAPMessageValidation নীতির <Element> উপাদানটিতে একটি মূল উপাদানের নাম রয়েছে যা বৈধ উপাদান নামকরণের জন্য XML নিয়ম মেনে চলে না। | build |
স্কিমা
প্রতিটি পলিসি টাইপ একটি XML স্কিমা ( .xsd ) দ্বারা সংজ্ঞায়িত করা হয়। তথ্যের জন্য, পলিসি স্কিমাগুলো গিটহাবে পাওয়া যাবে।