SOAPMessageValidation নীতি

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

SOAPMessageValidation নীতি নিম্নলিখিত কাজ করে:

  • XSD স্কিমার সাথে যেকোনও XML মেসেজ যাচাই করে
  • WSDL ডেফিনেশনের সাথে SOAP মেসেজ যাচাই করে
  • JSON এবং XML মেসেজের সঠিক ফর্ম্যাট নির্ধারণ করে

UI-তে এই নীতির নাম "SOAP মেসেজ যাচাইকরণ" হলেও, নীতিটি শুধু SOAP মেসেজ ছাড়াও আরও অনেক কিছু যাচাই করে। এই বিভাগে নীতিকে "মেসেজ যাচাইকরণ নীতি" হিসেবে উল্লেখ করা হয়েছে।

<MessageValidation> এলিমেন্ট

মেসেজ যাচাইকরণ নীতি নির্ধারণ করে।

ডিফল্ট ভ্যালু নিচে ডিফল্ট নীতি ট্যাব দেখুন
আবশ্যক? ঐচ্ছিক
Type জটিল অবজেক্ট
পেরেন্ট এলিমেন্ট প্রযোজ্য নয়
চাইল্ড এলিমেন্ট <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>

ডিফল্ট নীতি

আপনি Edge 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 প্রয়োজন

নীতির অভ্যন্তরীণ নাম। name বৈশিষ্ট্যের মানটিতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর এবং পিরিয়ড থাকতে পারে। এই মান 255 অক্ষরের বেশি হতে পারে না।

ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে <DisplayName> উপাদানটি ব্যবহার করুন।

continueOnError মিথ্যা ঐচ্ছিক একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে "false" এ সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ। একটি নীতি ব্যর্থ হওয়ার পরেও প্রবাহ সম্পাদন অব্যাহত রাখতে "সত্য" তে সেট করুন৷
enabled সত্য ঐচ্ছিক নীতি প্রয়োগ করতে "সত্য" এ সেট করুন। নীতিটি "বন্ধ" করতে "মিথ্যা" এ সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।
async মিথ্যা অবচয় এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

উদাহরণ

নিম্নলিখিত উদাহরণগুলি থেকে আপনি জানতে পারবেন যে কীভাবে মেসেজ যাচাইকরণ নীতি ব্যবহার করতে হয়:

১: XSD যাচাইকরণ

আপনি XSD স্কিমার সাথে XML মেসেজ অনুরোধের পেলোড যাচাই করতে মেসেজ যাচাইকরণ নীতি ব্যবহার করতে পারেন।

  1. নতুন 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>
  2. আপনার প্রক্সি এন্ডপয়েন্টের প্রি-ফ্লোতে SOAP মেসেজ যাচাইকরণ নীতি যোগ করুন:
    1. <ResourceURL> এলিমেন্টের মাধ্যমে আপনার XSD রিসোর্স ফাইলের লোকেশন নির্দিষ্ট করুন। যেমন:
      ...
        <ResourceURL>xsd://note-schema.xsd</ResourceURL>
      ...
    2. নীতি সংজ্ঞা থেকে <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>
  3. নিম্নলিখিত উদাহরণের মতো, মেসেজ পেলোড হিসেবে আপনার 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 মেসেজ অনুরোধের পেলোড যাচাই করতে আপনি মেসেজ যাচাইকরণ নীতি ব্যবহার করতে পারেন।

  1. নতুন WSDL রিসোর্স ফাইল তৈরি করুন। যেমন, "example-wsdl.wsdl":
  2. আপনার প্রক্সি এন্ডপয়েন্টের প্রি-ফ্লোতে SOAP মেসেজ যাচাইকরণ নীতি যোগ করুন:
    1. <SOAPMessage> এলিমেন্টের version অ্যাট্রিবিউটকে SOAP প্রোটোকলের সেই ভার্সনে সেট করুন যেটির সাথে আপনি যাচাই করতে চান। যেমন, "১.১":
      ...
        <SOAPMessage version="1.1"/>
      ...
    2. আপনি যে এলিমেন্টটি যাচাই করতে চান, সেটির জন্য <Element> এলিমেন্টের মান সেট করুন:
      ...
        <Element namespace="https://example.com/gateway">getID</Element>
      ...

      <Element> SOAP অনুরোধের এনভেলপে <Body> এলিমেন্টের অধীনে প্রথম চাইল্ডকে নির্দিষ্ট করে।

      সেই চাইল্ডের নেমস্পেসে namespace অ্যাট্রিবিউট সেট করুন।

    3. <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>
  3. নিম্নলিখিত উদাহরণের মতো, মেসেজ পেলোড হিসেবে 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 পেলোড সঠিকভাবে ফর্ম্যাট করা আছে কিনা তা চেক করতে:

  1. আপনার প্রক্সি এন্ডপয়েন্টের প্রি-ফ্লোতে SOAP মেসেজ যাচাইকরণ নীতি যোগ করুন।
  2. নীতি সংজ্ঞা থেকে <ResourceURL>, <SOAPMessage> এবং <Element> এলিমেন্ট সরিয়ে দিন।

    আপনার নীতি সংক্রান্ত সংজ্ঞা নিচে উল্লেখ করা উদাহরণের মতো দেখতে হবে:

    <MessageValidation async="false" continueOnError="false"
        enabled="true" name="validateXMLRequest">
      <DisplayName>My JSON Checker</DisplayName>
      <Properties/>
      <Source>request</Source>
    </MessageValidation>
  3. নিচের উদাহরণে যেমন দেখানো হয়েছে, আপনার API প্রক্সিতে একটি 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> এলিমেন্ট সব নীতির ক্ষেত্রে প্রযোজ্য।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক। আপনি <DisplayName> বাদ দিলে, নীতির name অ্যাট্রিবিউটের ভ্যালু ব্যবহার করা হয়
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <PolicyElement>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<DisplayName> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

উদাহরণ

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> এলিমেন্টে কোনও অ্যাট্রিবিউট বা চাইল্ড এলিমেন্ট নেই।

<Element>

যাচাই করার জন্য মেসেজের এলিমেন্ট নির্দিষ্ট করে। SOAP অনুরোধের এনভেলপে <Body> এলিমেন্টের অধীনে এটি হল প্রথম চাইল্ড।

ডিফল্ট ভ্যালু sampleObject
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <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
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <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>-এর ভ্যালু আপনার API প্রক্সিতে রিসোর্স ফাইল নির্দেশ করতে হবে। এটি HTTP বা HTTPS-এর মাধ্যমে এক্সটার্নাল রিসোর্স রেফার করতে পারে না।

আপনি <ResourceURL>-এর জন্য কোনও ভ্যালু নির্দিষ্ট না করলে, Content-type হেডার "application/json" বা "application/xml" হলে, যথাক্রমে, সঠিকভাবে ফর্ম্যাট করা JSON বা XML-এর জন্য মেসেজ চেক করা হয়।

<ResourceURL> এলিমেন্টে কোনও চাইল্ড এলিমেন্ট বা অ্যাট্রিবিউট নেই।

যাচাইকরণের জন্য XSD ব্যবহার করা

আপনি মেসেজ যাচাইকরণ নীতি দিয়ে যে XML পেলোড যাচাই করেন, সেটি যদি অন্য স্কিমার রেফারেন্স দেয়, তাহলে আপনাকে schemaLocation অ্যাট্রিবিউটে অন্তর্ভুক্ত XSD ফাইলের আগে 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 ভার্সন সংজ্ঞায়িত করে যার ভিত্তিতে মেসেজ যাচাইকরণ নীতি যাচাই করে।

ডিফল্ট ভ্যালু প্রযোজ্য নয়
আবশ্যক? ঐচ্ছিক
Type প্রযোজ্য নয়
পেরেন্ট এলিমেন্ট <MessageValidation>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<SOAPMessage> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

...
  <SOAPMessage version="[ 1.1 | 1.2 | 1.1/1.2 ]"/>
...

উদাহরণ

...
<SOAPMessage version="1.1"/>
...

<SOAPMessage> এলিমেন্টে নিম্নলিখিত অ্যাট্রিবিউট আছে:

অ্যাট্রিবিউট ডিফল্ট প্রয়োজনীয়? বিবরণ
version কোনওটিই নয় ঐচ্ছিক SOAP মেসেজ যাচাই করার জন্য এই নীতি যে SOAP ভার্সন ব্যবহার করে।

সঠিক ভ্যালু হল:

  • "১.১"
  • "১.২"
  • "১.১/১.২"

আরও তথ্যের জন্য, SOAP/1.1 থেকে SOAP ভার্সন ১.২-এ ৯টি পয়েন্টে দেখুন।

<Source>

যাচাই করার জন্য সোর্স মেসেজ শনাক্ত করে। এই এলিমেন্টের ভ্যালু হল সেই মেসেজের নাম যা আপনি যাচাই করতে চান।

আপনি <Source> সেট না করলে, এই নীতি ডিফল্ট হিসেবে "মেসেজ" হিসেবে সেট করা হয়, যা সম্পূর্ণ অনুরোধ মেসেজ (অনুরোধ ফ্লোতে) বা উত্তর মেসেজ (উত্তর ফ্লোতে) বোঝায়, যার মধ্যে যেকোনও পে-লোড অন্তর্ভুক্ত থাকে। এছাড়াও, আপনি স্পষ্টভাবে এটিকে "অনুরোধ" বা "উত্তর" হিসেবে সেট করতে পারেন যাতে অনুরোধ বা উত্তরকে রেফার করা যায়।

ডিফল্ট ভ্যালু অনুরোধ
আবশ্যক? ঐচ্ছিক
Type স্ট্রিং
পেরেন্ট এলিমেন্ট <MessageValidation>
চাইল্ড এলিমেন্ট কোনওটিই নয়

<Source> এলিমেন্ট নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিন্ট্যাক্স

...
  <Source>message_to_validate</Source>
...

উদাহরণ

...
<Source>request</Source>
...

"মেসেজ", "অনুরোধ" ও "উত্তর" ছাড়াও, আপনি <Source>-এর ভ্যালু আপনার ফ্লোতে থাকা যেকোনও মেসেজের নামে সেট করতে পারবেন। তবে, আপনি যদি এটি করেন, তাহলে এই নীতি কার্যকর করার আগে আপনার ফ্লোতে সেই নামের সাথে একটি কাস্টম মেসেজ তৈরি করতে হবে। অন্যথায়, আপনি একটি সমস্যার মেসেজ পাবেন।

মেসেজ ফ্লোতে <Source>-এর ভ্যালু সমাধান করা না গেলে অথবা মেসেজ নয় এমন কোনও টাইপে সমাধান করা হলে, নিম্নলিখিতগুলির মধ্যে কোনও একটি ঘটবে:

  • ভ্যালু নাল হলে: Edge steps.messagevalidation.SourceMessageNotAvailable এরর দেখায়।
  • মেসেজ নয় এমন ধরনের ক্ষেত্রে: Edge একটি steps.messagevalidation.NonMessageVariable ত্রুটি দেখায়।

<Source> এলিমেন্টে কোনও অ্যাট্রিবিউট বা চাইল্ড এলিমেন্ট নেই।

সমস্যার কোড

Edge নীতি থেকে ফেরত আসা ত্রুটিগুলি ত্রুটি কোড রেফারেন্স-এ বর্ণিত একটি সামঞ্জস্যপূর্ণ ফর্ম্যাট অনুসরণ করে।

এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, Edge-এর মাধ্যমে ফেরত আসা ফল্ট কোড ও সমস্যার মেসেজ এবং সেট করা ফল্ট ভেরিয়েবল সম্পর্কে এই বিভাগে বর্ণনা করা হয়েছে। সমস্যা সমাধানের জন্য আপনি যদি ফল্ট রুল ডেভেলপ করেন, তাহলে এই তথ্য জানা আপনার জন্য গুরুত্বপূর্ণ। আরও জানতে, নীতি সংক্রান্ত সমস্যা সম্পর্কে আপনার যা জানা প্রয়োজন এবং ত্রুটি মোকাবেলা করা দেখুন।

রানটাইম সমস্যা

নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।

সমস্যার কোড HTTP স্ট্যাটাস কারণ এর সমাধান করুন
steps.messagevalidation.SourceMessageNotAvailable 500

নীতির <Source> এলিমেন্টে উল্লেখ করা কোনও ভেরিয়েবল যদি এগুলির মধ্যে কোনও একটি হয়, তাহলে এই সমস্যা হয়:

  • আউট-অফ-স্কোপ (যে নির্দিষ্ট ফ্লোতে নীতি প্রয়োগ করা হচ্ছে সেখানে উপলভ্য নয়)
  • অথবা
  • সমাধান করা যাচ্ছে না (সংজ্ঞায়িত করা হয়নি)
steps.messagevalidation.NonMessageVariable 500

SOAPMessageValidation নীতিতে <Source> এলিমেন্টটি message ধরনের নয় এমন কোনও ভেরিয়েবলে সেট করা থাকলে এই সমস্যা হয়।

মেসেজ টাইপ ভেরিয়েবল সম্পূর্ণ HTTP অনুরোধ ও উত্তরকে উপস্থাপন করে। বিল্ট-ইন Edge ফ্লো ভেরিয়েবল request, response ও message হল মেসেজ ধরনের। মেসেজ ভেরিয়েবল সম্পর্কে আরও জানতে, ভেরিয়েবল রেফারেন্স দেখুন।

steps.messagevalidation.Failed 500 XSD স্কিমা বা WSDL ডেফিনিশনের সাথে ইনপুট মেসেজ পে-লোড যাচাই করতে SOAPMessageValidation নীতি ব্যর্থ হলে এই সমস্যা হয়। এছাড়াও, পেলোড মেসেজে ভুল JSON বা XML থাকলে এটি ঘটবে।

ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

এই নীতি থাকা কোনও প্রক্সি আপনি প্রয়োগ করলে, এই সমস্যা হতে পারে।

সমস্যার নাম কারণ এর সমাধান করুন
InvalidResourceType SOAPMessageValidation নীতিতে <ResourceURL> এলিমেন্ট এমন রিসোর্স টাইপে সেট করা আছে যা নীতিতে কাজ করে না।
ResourceCompileFailed SOAPMessageValidation নীতির <ResourceURL> এলিমেন্টে উল্লেখ করা রিসোর্স স্ক্রিপ্টে এমন একটি সমস্যা রয়েছে যা এটিকে কম্পাইল করা থেকে আটকায়।
RootElementNameUnspecified SOAPMessageValidation নীতির <Element> এলিমেন্টে রুট এলিমেন্টের নাম নেই।
InvalidRootElementName SOAPMessageValidation নীতির <Element> এলিমেন্টে একটি রুট এলিমেন্টের নাম আছে যা এলিমেন্টের সঠিক নাম সংক্রান্ত XML নিয়ম মেনে চলে না।

স্কিমা

প্রতিটি নীতির ধরন XML স্কিমা (.xsd) দ্বারা সংজ্ঞায়িত করা হয়। রেফারেন্সের জন্য, নীতি স্কিমা GitHub-এ উপলভ্য।

সম্পর্কিত বিষয়