SOAPMessage Validation নীতি

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

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

  • তাদের XSD স্কিমাগুলির বিরুদ্ধে যেকোনো XML বার্তা যাচাই করে৷
  • একটি WSDL সংজ্ঞার বিরুদ্ধে SOAP বার্তা যাচাই করে
  • JSON এবং XML বার্তাগুলির সুগঠিততা নির্ধারণ করে

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

সুবিধা

বার্তা যাচাইকরণ নিম্নলিখিত সুবিধা প্রদান করে:

  • অবিলম্বে অ্যাপ ডেভেলপারদের জানান যারা আপনার এপিআই ব্যবহার করছেন যদি তাদের অনুরোধগুলি অসঙ্গতিপূর্ণ বা অসম্পূর্ণ হয়।
  • অনুরোধে সমস্যাগুলি চিহ্নিত করে , যেমন XML ট্যাগগুলি সঠিকভাবে বন্ধ করা হয়নি৷
  • অপ্রত্যাশিত আচরণের কারণ হতে পারে এমন কাঠামোর সাথে XML বা SOAP বার্তাগুলিকে ব্লক করে ব্যাকএন্ড পরিষেবাগুলিকে রক্ষা করে
  • সমস্যা সমাধান, ফোরাম অনুসন্ধান বা প্রযুক্তি সহায়তার সাথে পরামর্শ করার সময় ব্যয় করা হ্রাস করে
  • যাচাইকরণ ত্রুটিগুলি দূর করতে ডেভেলপারদেরকে XML স্কিমা WSDL সংজ্ঞার সাথে পরিচিত হতে উত্সাহিত করে , ভালভাবে বোঝা XML স্কিমাগুলিকে আপনার API ডকুমেন্টেশনের একটি মূল উপাদান করে তোলে৷

ভিডিও

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

ভিডিও বর্ণনা
XML অনুরোধ যাচাই করুন বার্তা যাচাইকরণ নীতি ব্যবহার করে একটি API-এর জন্য XML অনুরোধ যাচাই করুন।
JSON অনুরোধ যাচাই করুন বার্তা যাচাইকরণ নীতি ব্যবহার করে একটি API-এর জন্য JSON অনুরোধটি যাচাই করুন।

<MessageValidation> উপাদান

বার্তা যাচাইকরণ নীতি সংজ্ঞায়িত করে।

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

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

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

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

উদাহরণ

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

আপনি একটি 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 শিরোনাম "অ্যাপ্লিকেশন/এক্সএমএল" এ সেট করা আছে।

    আপনি পেলোডের জন্য একটি ডেটা ফাইলও তৈরি করতে পারেন এবং নিম্নলিখিতগুলির মতো একটি কমান্ড দিয়ে এটি উল্লেখ করতে পারেন:

    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 (verbose) আউটপুট নির্দিষ্ট করেন, তাহলে প্রতিক্রিয়া নিম্নলিখিতগুলির মতো হওয়া উচিত:

< 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>'

আপনি একটি বৈধতা ত্রুটি প্রাপ্ত করা উচিত.

আপনি WSDL এর বিরুদ্ধে একটি SOAP বার্তা অনুরোধের পেলোড যাচাই করতে বার্তা যাচাইকরণ নীতি ব্যবহার করতে পারেন।

  1. একটি নতুন WSDL রিসোর্স ফাইল তৈরি করুন। উদাহরণস্বরূপ, "example-wsdl.wsdl":
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="https://example.com/gateway"
        xmlns:tns="https://example.com/gateway"
        xmlns:types="https://example.com/gateway/types"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/">
      <wsdl:types>
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="https://example.com/gateway/types"
            elementFormDefault="qualified">
          <xsd:element name="MyType">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="ID" nillable="false" minOccurs="1" maxOccurs="1"/>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:schema>
        <schema attributeFormDefault="unqualified" elementFormDefault="qualified"
            targetNamespace="https://example.com/gateway"
            xmlns="http://www.w3.org/2001/XMLSchema">
          <xsd:import namespace="https://example.com/gateway/types"/>
          <element name="getID">
            <complexType>
              <sequence>
                <element ref="types:MyType"/>
              </sequence>
            </complexType>
          </element>
        </schema>
      </wsdl:types>
    
      <wsdl:message name="getRequest">
        <wsdl:part name="getRequest" element="tns:getID"/>
      </wsdl:message>
      <wsdl:message name="getResponse">
        <wsdl:part name="getResponse" element="tns:getID"/>
      </wsdl:message>
    
      <wsdl:portType name="PortType">
        <wsdl:operation name="get">
          <wsdl:input name="methodRequest" message="tns:getRequest"/>
          <wsdl:output name="methodResponse" message="tns:getResponse"/>
        </wsdl:operation>
      </wsdl:portType>
    
      <wsdl:service name="Gateway">
        <wsdl:port name="GatewaySoap" binding="tns:SoapBinding">
          <wsdlsoap:address location="https://example.com/gateway"/>
        </wsdl:port>
      </wsdl:service>
    
      <wsdl:binding name="SoapBinding" type="tns:PortType">
        <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    
        <wsdl:operation name="get">
          <wsdlsoap:operation soapAction="get"/>
          <wsdl:input name="methodRequest"/>
          <wsdl:output name="methodResponse"/>
        </wsdl:operation>
    
      </wsdl:binding>
    </wsdl:definitions>
  2. আপনার প্রক্সি এন্ডপয়েন্টের প্রাক-প্রবাহে SOAP বার্তা যাচাইকরণ নীতি যোগ করুন:
    1. আপনি যে SOAP প্রোটোকলের বিরুদ্ধে যাচাই করতে চান তার সংস্করণে <SOAPMessage> উপাদানের version বৈশিষ্ট্য সেট করুন। উদাহরণস্বরূপ, "1.1":
      ...
        <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 শিরোনাম "অ্যাপ্লিকেশন/এক্সএমএল" এ সেট করা আছে।

    আপনি পেলোডের জন্য একটি ডেটা ফাইলও তৈরি করতে পারেন এবং নিম্নলিখিতগুলির মতো একটি কমান্ড দিয়ে এটি উল্লেখ করতে পারেন:

    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"
}

আপনি একটি 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 শিরোনাম "অ্যাপ্লিকেশন/json" এ সেট করা আছে।

    সুগঠিত হওয়ার জন্য একটি XML ফাইল পরীক্ষা করতে, XML বার্তা পেলোড হিসাবে ব্যবহার করুন এবং Content-type "অ্যাপ্লিকেশন/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> এর মান অবশ্যই আপনার API প্রক্সিতে একটি রিসোর্স ফাইল নির্দেশ করবে। এটি HTTP বা HTTPS এর উপর বাহ্যিক সংস্থানগুলি উল্লেখ করতে পারে না৷

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

<ResourceURL> উপাদানটির কোনো চাইল্ড উপাদান বা বৈশিষ্ট্য নেই।

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

আপনি যে XML পেলোডটি মেসেজ ভ্যালিডেশন নীতির সাথে যাচাই করেন সেটি যদি অন্য স্কিমার উল্লেখ করে, তাহলে আপনাকে অবশ্যই অন্তর্ভুক্ত XSD ফাইলটিকে schemaLocation অ্যাট্রিবিউটে xsd সহ প্রিফিক্স করতে হবে।

নিম্নলিখিত উদাহরণ স্কিমা একাধিক XSDs গঠিত:

<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 অন্তত একটি স্কিমা সংজ্ঞায়িত করা আবশ্যক. যদি এটি অন্তত একটি স্কিমা উল্লেখ না করে, বার্তা যাচাইকরণ নীতি ব্যর্থ হয়।

একটি স্কিমার জন্য সর্বোচ্চ আমদানি গভীরতা হল 10৷ আপনি যদি নেস্টেড আমদানির সংখ্যা অতিক্রম করেন তবে বার্তা যাচাইকরণ নীতি ব্যর্থ হয়৷

<SOAPMessage>

SOAP সংস্করণ সংজ্ঞায়িত করে যার বিরুদ্ধে বার্তা যাচাইকরণ নীতি বৈধ করে।

ডিফল্ট মান n/a
প্রয়োজন? ঐচ্ছিক
টাইপ n/a
অভিভাবক উপাদান <MessageValidation>
শিশু উপাদান কোনোটিই নয়

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

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

<SOAPMessage> উপাদানটির নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

বৈশিষ্ট্য ডিফল্ট প্রয়োজন? বর্ণনা
version কোনোটিই নয় ঐচ্ছিক SOAP সংস্করণ যা এই নীতিটি SOAP বার্তাগুলিকে যাচাই করতে ব্যবহার করে৷

বৈধ মান হল:

  • "1.1"
  • "1.2"
  • "1.1/1.2"

আরও তথ্যের জন্য, SOAP/1.1 থেকে SOAP সংস্করণ 1.2 ইন 9 পয়েন্ট দেখুন।

<Source>

যাচাই করার জন্য উৎস বার্তা সনাক্ত করে। এই উপাদানটির মান হল সেই বার্তাটির নাম যা আপনি যাচাই করতে চান।

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

ডিফল্ট মান অনুরোধ
প্রয়োজন? ঐচ্ছিক
টাইপ স্ট্রিং
অভিভাবক উপাদান <MessageValidation>
শিশু উপাদান কোনোটিই নয়

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

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

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

যদি <Source> এর মান বার্তা প্রবাহে সমাধান করা না যায় বা একটি নন-মেসেজ প্রকারে সমাধান করা যায়, তাহলে নিম্নলিখিতগুলির মধ্যে একটি ঘটে:

  • যদি একটি শূন্য মান: এজ একটি steps.messagevalidation.SourceMessageNotAvailable ত্রুটি নিক্ষেপ করে।
  • যদি একটি নন-মেসেজ টাইপ: এজ একটি steps.messagevalidation.NonMessageVariable ত্রুটি নিক্ষেপ করে।

<Source> উপাদানটির কোনো বৈশিষ্ট্য বা শিশু উপাদান নেই।

ত্রুটি কোড

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

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

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
steps.messagevalidation.SourceMessageNotAvailable 500

এই ত্রুটিটি ঘটে যদি নীতির <Source> উপাদানে নির্দিষ্ট করা একটি পরিবর্তনশীল হয়:

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

এই ত্রুটিটি ঘটবে যদি SOAPMessageValidation পলিসিতে <Source> উপাদানটি একটি ভেরিয়েবলে সেট করা থাকে যা টাইপ বার্তার নয়।

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

steps.messagevalidation.Failed 500 এই ত্রুটিটি ঘটে যদি SOAPMessageValidation নীতি XSD স্কিমা বা WSDL সংজ্ঞার বিপরীতে ইনপুট বার্তা পেলোড যাচাই করতে ব্যর্থ হয়। পেলোড বার্তায় ত্রুটিপূর্ণ JSON বা XML থাকলে এটিও ঘটবে।

স্থাপনার ত্রুটি

আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷

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

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

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
steps.messagevalidation.SourceMessageNotAvailable 500

এই ত্রুটিটি ঘটে যদি নীতির <Source> উপাদানে নির্দিষ্ট করা একটি পরিবর্তনশীল হয়:

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

এই ত্রুটিটি ঘটবে যদি SOAPMessageValidation পলিসিতে <Source> উপাদানটি একটি ভেরিয়েবলে সেট করা থাকে যা টাইপ বার্তার নয়।

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

steps.messagevalidation.Failed 500 এই ত্রুটিটি ঘটে যদি SOAPMessageValidation নীতি XSD স্কিমা বা WSDL সংজ্ঞার বিপরীতে ইনপুট বার্তা পেলোড যাচাই করতে ব্যর্থ হয়। পেলোড বার্তায় ত্রুটিপূর্ণ JSON বা XML থাকলে এটিও ঘটবে।

স্থাপনার ত্রুটি

আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷

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

স্কিমাস

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

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