OASपुष्टि करने की नीति

Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

OASValidation की नीति के बारे में जानकारी

OASValidation (OpenAPI स्पेसिफ़िकेशन की पुष्टि) नीति की मदद से, आने वाले अनुरोध या रिस्पॉन्स मैसेज की पुष्टि, OpenAPI 3.0 स्पेसिफ़िकेशन (JSON या YAML) के हिसाब से की जा सकती है. देखें कि किस तरह के कॉन्टेंट की पुष्टि की जाती है?

OASValidation नीति, पुष्टि करने के लिए इस्तेमाल किए जाने वाले OpenAPI स्पेसिफ़िकेशन का नाम बताती है. यह नाम तब इस्तेमाल किया जाता है, जब नीति जिस चरण से जुड़ी होती है वह चरण पूरा हो जाता है. OpenAPI स्पेसिफ़िकेशन को एपीआई प्रॉक्सी बंडल में, संसाधन के तौर पर यहां दी गई स्टैंडर्ड जगह पर सेव किया जाता है: apiproxy/resources/oas. OpenAPI स्पेसिफ़िकेशन में .json, .yml, .yaml एक्सटेंशन होना चाहिए.

संसाधन मैनेज करना में बताए गए तरीके से, यूज़र इंटरफ़ेस (यूआई) या एपीआई का इस्तेमाल करके, एपीआई प्रॉक्सी बंडल में संसाधन के तौर पर OpenAPI स्पेसिफ़िकेशन जोड़ें.

किस तरह के कॉन्टेंट की पुष्टि की जाती है?

इस टेबल में, OASValidation नीति के तहत पुष्टि किए जाने वाले अनुरोध मैसेज के कॉन्टेंट के बारे में बताया गया है.

घटक सत्यापन का अनुरोध करें
Basepath एपीआई प्रॉक्सी से तय किए गए बेसपाथ की पुष्टि करता है. साथ ही, OpenAPI स्पेसिफ़िकेशन में बताए गए बेसपाथ को अनदेखा करता है.
पथ यह पुष्टि करता है कि अनुरोध पाथ (बेसपाथ को छोड़कर) OpenAPI स्पेसिफ़िकेशन में बताए गए पाथ पैटर्न से मेल खाता है या नहीं.
क्रिया यह पुष्टि करता है कि OpenAPI स्पेसिफ़िकेशन में, पाथ के लिए क्रिया तय की गई है.
अनुरोध का मुख्य हिस्सा
  • अगर ज़रूरी हो, तो अनुरोध में मैसेज के मुख्य हिस्से की पुष्टि करता है.
  • इसके अलावा, OpenAPI स्पेसिफ़िकेशन में ऑपरेशन के अनुरोध बॉडी स्कीमा के हिसाब से, मैसेज बॉडी की पुष्टि की जा सकती है. हालांकि, ऐसा करना ज़रूरी नहीं है. <ValidateMessageBody> का इस्तेमाल करके, इस विकल्प को कॉन्फ़िगर करें

ध्यान दें: नीति, अनुरोध मैसेज के मुख्य हिस्से की पुष्टि, OpenAPI स्पेसिफ़िकेशन के हिसाब से सिर्फ़ तब करती है, जब Content-Type को application/json पर सेट किया गया हो. अगर कॉन्टेंट टाइप को application/json पर सेट नहीं किया गया है, तो अनुरोध मैसेज के मुख्य हिस्से की पुष्टि अपने-आप हो जाएगी. हालांकि, इसके लिए कॉन्टेंट की पुष्टि नहीं की जाएगी.

पैरामीटर
  • यह पुष्टि करता है कि अनुरोध में ज़रूरी पैरामीटर मौजूद हैं. इनमें पाथ, हेडर, क्वेरी, और कुकी पैरामीटर शामिल हैं.
  • यह पुष्टि करता है कि पैरामीटर वैल्यू, OpenAPI स्पेसिफ़िकेशन में बताई गई वैल्यू से मेल खाती हैं.
  • इसके अलावा, यह पुष्टि की जा सकती है कि अनुरोध में ऐसे पैरामीटर मौजूद हैं या नहीं जिन्हें OpenAPI स्पेसिफ़िकेशन में नहीं बताया गया है. <AllowUnspecifiedParameters> का इस्तेमाल करके, इस विकल्प को कॉन्फ़िगर करें

नीचे दी गई टेबल में, OASValidation नीति के हिसाब से पुष्टि किए गए रिस्पॉन्स मैसेज के कॉन्टेंट के बारे में बताया गया है.

घटक प्रतिक्रिया पुष्टि
पथ यह पुष्टि करता है कि अनुरोध पाथ (बेसपाथ को छोड़कर) OpenAPI स्पेसिफ़िकेशन में बताए गए पाथ पैटर्न से मेल खाता है या नहीं.
क्रिया यह पुष्टि करता है कि OpenAPI स्पेसिफ़िकेशन में, पाथ के लिए क्रिया तय की गई है.
जवाब का मुख्य हिस्सा
  • अगर ज़रूरी हो, तो जवाब में मैसेज के मुख्य हिस्से की पुष्टि करता है.
  • यह पुष्टि करता है कि OpenAPI स्पेसिफ़िकेशन में मौजूद रिस्पॉन्स हेडर, रिस्पॉन्स मैसेज में मौजूद हैं. साथ ही, यह भी पुष्टि करता है कि रिस्पॉन्स हेडर की वैल्यू, स्कीमा से मेल खाती है.
  • इसके अलावा, OpenAPI स्पेसिफ़िकेशन में ऑपरेशन के रिस्पॉन्स बॉडी स्कीमा के हिसाब से, मैसेज बॉडी की पुष्टि की जा सकती है. <ValidateMessageBody> का इस्तेमाल करके, इस विकल्प को कॉन्फ़िगर करें

सैंपल

यहां दिए गए उदाहरणों में, OpenAPI 3.0 स्पेसिफ़िकेशन के हिसाब से मैसेज की पुष्टि करने के लिए, OASValidation नीति का इस्तेमाल करने के कुछ तरीके बताए गए हैं.

अनुरोध वाले मैसेज की पुष्टि करना

नीचे दिए गए उदाहरण में, myoaspolicy नीति अनुरोध मैसेज के मुख्य हिस्से की पुष्टि करती है. यह पुष्टि, my-spec.json OpenAPI Specification में बताए गए ऑपरेशन के अनुरोध मैसेज के मुख्य हिस्से के स्कीमा के हिसाब से की जाती है.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.json</OASResource>
   <Options>
      <ValidateMessageBody>true</ValidateMessageBody>
   </Options>
   <Source>request</Source>
</OASValidation>

अगर मैसेज का मुख्य हिस्सा, OpenAPI स्पेसिफ़िकेशन के मुताबिक नहीं है, तो policies.oasvalidation.Failed गड़बड़ी का कोड दिखता है.

पैरामीटर की पुष्टि करना

नीचे दिए गए उदाहरण में, नीति को इस तरह कॉन्फ़िगर किया गया है कि अगर अनुरोध में कोई ऐसा हेडर, क्वेरी या कुकी पैरामीटर दिया गया है जो OpenAPI स्पेसिफ़िकेशन में तय नहीं किया गया है, तो अनुरोध अस्वीकार कर दिया जाए.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
         <Query>false</Query>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<OASValidation> एलिमेंट

OpenAPI स्पेसिफ़िकेशन की पुष्टि करने की नीति के बारे में बताता है.

डिफ़ॉल्ट वैल्यू नीचे डिफ़ॉल्ट नीति टैब देखें
क्या यह ज़रूरी है? ज़रूरी है
स्ट्रीम किस तरह की है कॉम्प्लेक्स ऑब्जेक्ट
पैरंट एलिमेंट लागू नहीं
चाइल्ड एलिमेंट <DisplayName>
<OASResource>
<Source>
<Options>
<Source>

सिंटैक्स

<OASValidation> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<OASValidation
  continueOnError="[true|false]"
  enabled="[true|false]"
  name="policy_name"
>
    <!-- All OASValidation child elements are optional except OASResource -->
    <DisplayName>policy_display_name</DisplayName>
    <OASResource>validation_JSON_or_YAML</OASResource>
    <Options>
        <ValidateMessageBody>[true|false]</ValidateMessageBody>
        <AllowUnspecifiedParameters>
            <Header>[true|false]</Header>
            <Query>[true|false]</Query>
            <Cookie>[true|false]</Cookie>
        </AllowUnspecifiedParameters>
    </Options>
    <Source>message_to_validate</Source>
</OASValidation>

डिफ़ॉल्ट नीति

यहां दिए गए उदाहरण में, Apigee यूज़र इंटरफ़ेस (यूआई) में अपने फ़्लो में OAS की पुष्टि करने की नीति जोड़ने पर, डिफ़ॉल्ट सेटिंग दिख रही हैं:

<OASValidation continueOnError="false" enabled="true" name="OpenAPI-Spec-Validation-1">
    <DisplayName>OpenAPI Spec Validation-1</DisplayName>
    <Properties/>
    <Source>request</Source>
    <OASResource>oas://OpenAPI-Spec-Validation-1.yaml</OASResource>
</OASValidation>

इस एलिमेंट में ये एट्रिब्यूट शामिल होते हैं, जो सभी नीतियों में शामिल हैं:

एट्रिब्यूट डिफ़ॉल्ट ज़रूरी है? ब्यौरा
name लागू नहीं ज़रूरी

नीति का अंदरूनी नाम. name एट्रिब्यूट की वैल्यू में अक्षर, संख्याएं, स्पेस, हाइफ़न, अंडरस्कोर, और फ़ुल स्टॉप का इस्तेमाल किया जा सकता है. इस वैल्यू में 255 से ज़्यादा वर्ण नहीं हो सकते.

इसके अलावा, मैनेजमेंट एलिमेंट के यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, नीति एलिमेंट को किसी अलग नाम से इस्तेमाल करने के लिए, <DisplayName> एलिमेंट का इस्तेमाल किया जा सकता है.

continueOnError गलत ज़रूरी नहीं नीति के काम न करने पर गड़बड़ी दिखाने के लिए, "गलत" पर सेट करें. ज़्यादातर नीतियों के लिए इस तरीके का इस्तेमाल किया जाना चाहिए. नीति लागू न होने के बाद भी फ़्लो चलाने के लिए, "सही" पर सेट करें.
enabled सही ज़रूरी नहीं नीति लागू करने के लिए, "सही" पर सेट करें. नीति को "बंद" करने के लिए "गलत" पर सेट करें. अगर नीति किसी फ़्लो से जुड़ी हुई हो, तो भी उसे लागू नहीं किया जाएगा.
async   गलत बहिष्कृत इस एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है.

चाइल्ड एलिमेंट का रेफ़रंस

इस सेक्शन में, <OASValidation> के चाइल्ड एलिमेंट के बारे में बताया गया है.

<DisplayName>

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, more natural-sounding name.

The <DisplayName> element is common to all policies.

Default Value n/a
Required? Optional. If you omit <DisplayName>, the value of the policy's name attribute is used
Type String
Parent Element <PolicyElement>
Child Elements None

The <DisplayName> element uses the following syntax:

Syntax

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

Example

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

The <DisplayName> element has no attributes or child elements.

<OASResource>

पुष्टि करने के लिए, OpenAPI स्पेसिफ़िकेशन की जानकारी देता है. इस फ़ाइल को इनमें से किसी भी जगह सेव किया जा सकता है:

  • एपीआई प्रॉक्सी बंडल में /apiproxy/resources/oas में एपीआई प्रॉक्सी के दायरे में
  • एपीआई प्रॉक्सी एडिटर के नेविगेटर व्यू के Resources सेक्शन में.

ज़्यादा जानकारी के लिए, संसाधन मैनेज करना लेख पढ़ें.

{oas.resource.url} जैसे मैसेज टेंप्लेट का इस्तेमाल करके, OpenAPI स्पेसिफ़िकेशन तय किया जा सकता है. इस मामले में, कर्ली ब्रैकेट में मौजूद फ़्लो वैरिएबल oas.resource.url की वैल्यू का आकलन किया जाएगा और रनटाइम के दौरान, पेलोड स्ट्रिंग में बदल दिया जाएगा. ज़्यादा जानकारी के लिए, मैसेज टेंप्लेट लेख पढ़ें.

डिफ़ॉल्ट वैल्यू कोई नहीं
क्या यह ज़रूरी है? ज़रूरी है
स्ट्रीम किस तरह की है स्ट्रिंग
पैरंट एलिमेंट <OASValidation>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

<OASResource> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   ...
</OASValidation>

उदाहरण

इस उदाहरण में, एपीआई प्रॉक्सी बंडल में /apiproxy/resources/oas में सेव की गई my-spec.yaml खास जानकारी का रेफ़रंस दिया गया है:

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
</OASValidation>

<OASResource> एलिमेंट में कोई एट्रिब्यूट या चाइल्ड एलिमेंट नहीं है.

<Options>

नीति के लिए विकल्प कॉन्फ़िगर करता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
क्या यह ज़रूरी है? वैकल्पिक
स्ट्रीम किस तरह की है कॉम्प्लेक्स टाइप
पैरंट एलिमेंट <OASValidation>
चाइल्ड एलिमेंट <ValidateMessageBody>
<AllowUnspecifiedParameters>

सिंटैक्स

<Options> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <ValidateMessageBody>[true|false]</ValidateMessageBody>
      <AllowUnspecifiedParameters>
         <Header>[true|false]</Header>
         <Query>[true|false]</Query>
         <Cookie>[true|false]</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

उदाहरण

नीचे दिए गए उदाहरण में, नीति के विकल्पों को कॉन्फ़िगर किया गया है. हर विकल्प के बारे में ज़्यादा जानकारी नीचे दी गई है.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <ValidateMessageBody>false</ValidateMessageBody>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
         <Query>false</Query>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<ValidateMessageBody>

इससे यह तय होता है कि नीति को OpenAPI स्पेसिफ़िकेशन में, मैसेज के मुख्य हिस्से की पुष्टि, ऑपरेशन के अनुरोध के मुख्य हिस्से के स्कीमा के हिसाब से करनी चाहिए या नहीं. मैसेज के मुख्य हिस्से के कॉन्टेंट की पुष्टि करने के लिए, इसे सही है पर सेट करें. सिर्फ़ मैसेज के मुख्य हिस्से के मौजूद होने की पुष्टि करने के लिए, इसकी वैल्यू को गलत है पर सेट करें.

पुष्टि से जुड़ी गड़बड़ी के बाद, फ़्लो को जारी रखने या नहीं रखने की सेटिंग को कंट्रोल किया जा सकता है. इसके लिए, <OASValidation> एलिमेंट के लिए continueOnError एट्रिब्यूट की वैल्यू को true पर सेट करें.

डिफ़ॉल्ट वैल्यू गलत
क्या यह ज़रूरी है? वैकल्पिक
स्ट्रीम किस तरह की है बूलियन
पैरंट एलिमेंट <Options>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

<ValidateMessageBody> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
         <ValidateMessageBody>[true|false]</ValidateMessageBody>
   </Options>
   ...
</OASValidation>

उदाहरण

इस उदाहरण में, मैसेज के मुख्य हिस्से के कॉन्टेंट की पुष्टि करने की सुविधा चालू की गई है:

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <ValidateMessageBody>true</ValidateMessageBody>
   </Options>
</OASValidation>

<AllowUnspecifiedParameters>

अगर अनुरोध में ऐसे हेडर, क्वेरी या कुकी पैरामीटर मौजूद हैं जिन्हें OpenAPI स्पेसिफ़िकेशन में तय नहीं किया गया है, तो नीति के व्यवहार को कॉन्फ़िगर करता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
क्या यह ज़रूरी है? वैकल्पिक
स्ट्रीम किस तरह की है कॉम्प्लेक्स टाइप
पैरंट एलिमेंट <Options>
चाइल्ड एलिमेंट <Header>
<Query>
<Cookie>

सिंटैक्स

<AllowUnspecifiedParameters> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>[true|false]</Header>
         <Query>[true|false]</Query>
         <Cookie>[true|false]</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

उदाहरण

नीचे दिए गए उदाहरण में, नीति को इस तरह कॉन्फ़िगर किया गया है कि अगर अनुरोध में कोई ऐसा हेडर, क्वेरी या कुकी पैरामीटर दिया गया है जो OpenAPI स्पेसिफ़िकेशन में तय नहीं किया गया है, तो अनुरोध अस्वीकार कर दिया जाए.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
         <Query>false</Query>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

अगर अनुरोध में ऐसे हेडर पैरामीटर मौजूद हैं जो OpenAPI स्पेसिफ़िकेशन में तय नहीं किए गए हैं, तो नीति के व्यवहार को कॉन्फ़िगर करता है.

अनुरोध में ऐसे हेडर पैरामीटर शामिल करने की अनुमति देने के लिए जो OpenAPI स्पेसिफ़िकेशन में तय नहीं किए गए हैं, इस पैरामीटर को सही है पर सेट करें. इसके अलावा, नीति लागू न हो, इसके लिए इस पैरामीटर को गलत है पर सेट करें.

डिफ़ॉल्ट वैल्यू सही
क्या यह ज़रूरी है? बूलियन
स्ट्रीम किस तरह की है कॉम्प्लेक्स टाइप
पैरंट एलिमेंट <AllowUnspecifiedParameters>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

<Header> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>[true|false]</Header>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

उदाहरण

नीचे दिए गए उदाहरण में, नीति को इस तरह कॉन्फ़िगर किया गया है कि अगर अनुरोध में ऐसा हेडर पैरामीटर दिया गया है जो OpenAPI Specification में तय नहीं किया गया है, तो अनुरोध अस्वीकार कर दिया जाए.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<Query> (<AllowUnspecifiedParameters> का बच्चा)

अगर अनुरोध में ऐसे क्वेरी पैरामीटर मौजूद हैं जिन्हें OpenAPI स्पेसिफ़िकेशन में तय नहीं किया गया है, तो नीति के व्यवहार को कॉन्फ़िगर करता है.

अनुरोध में ऐसे क्वेरी पैरामीटर शामिल करने की अनुमति देने के लिए जो OpenAPI स्पेसिफ़िकेशन में नहीं दिए गए हैं, इस पैरामीटर को सही पर सेट करें. इसके अलावा, नीति लागू न हो, इसके लिए इस पैरामीटर को गलत है पर सेट करें.

डिफ़ॉल्ट वैल्यू सही
क्या यह ज़रूरी है? बूलियन
स्ट्रीम किस तरह की है कॉम्प्लेक्स टाइप
पैरंट एलिमेंट <AllowUnspecifiedParameters>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

<Query> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Query>[true|false]</Query>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

उदाहरण

इस उदाहरण में, नीति को इस तरह कॉन्फ़िगर किया गया है कि अगर अनुरोध में ऐसा क्वेरी पैरामीटर दिया गया है जो OpenAPI स्पेसिफ़िकेशन में नहीं दिया गया है, तो अनुरोध अस्वीकार कर दिया जाए.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Query>false</Query>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

अगर अनुरोध में ऐसे कुकी पैरामीटर मौजूद हैं जिन्हें OpenAPI स्पेसिफ़िकेशन में तय नहीं किया गया है, तो नीति के व्यवहार को कॉन्फ़िगर करता है.

अनुरोध में ऐसे कुकी पैरामीटर शामिल करने की अनुमति देने के लिए जो OpenAPI स्पेसिफ़िकेशन में नहीं बताए गए हैं, इस पैरामीटर को सही पर सेट करें. इसके अलावा, नीति लागू न हो, इसके लिए इस पैरामीटर को गलत है पर सेट करें.

डिफ़ॉल्ट वैल्यू सही
क्या यह ज़रूरी है? बूलियन
स्ट्रीम किस तरह की है कॉम्प्लेक्स टाइप
पैरंट एलिमेंट <AllowUnspecifiedParameters>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

<Cookie> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Query>[true|false]</Query>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

उदाहरण

इस उदाहरण में, नीति को इस तरह कॉन्फ़िगर किया गया है कि अगर अनुरोध में ऐसा क्वेरी पैरामीटर दिया गया है जो OpenAPI स्पेसिफ़िकेशन में नहीं बताया गया है, तो अनुरोध अस्वीकार कर दिया जाए.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<Source>

JSON मैसेज, जिसका आकलन JSON पेलोड अटैक के हिसाब से किया जाना है. आम तौर पर, इसे request पर सेट किया जाता है, क्योंकि आपको आम तौर पर क्लाइंट ऐप्लिकेशन से आने वाले अनुरोधों का आकलन करना होगा. जवाब वाले मैसेज का आकलन करने के लिए, इसे जवाब पर सेट करें. मैसेज पर सेट करें, ताकि अनुरोध फ़्लो में नीति अटैच होने पर, अनुरोध मैसेज का अपने-आप आकलन किया जा सके. साथ ही, जवाब फ़्लो में नीति अटैच होने पर, जवाब मैसेज का अपने-आप आकलन किया जा सके.

डिफ़ॉल्ट वैल्यू CANNOT TRANSLATE
क्या यह ज़रूरी है? वैकल्पिक
स्ट्रीम किस तरह की है स्ट्रिंग
पैरंट एलिमेंट <Source>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

<Source> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Source>[message|request|response]</Source>
   ...
</OASValidation>

उदाहरण

इस उदाहरण में, अनुरोध फ़्लो में नीति अटैच होने पर अनुरोध मैसेज और जवाब फ़्लो में नीति अटैच होने पर जवाब मैसेज का अपने-आप आकलन किया जाता है:

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Source>message</Source>
</OASValidation>

<Source> एलिमेंट में कोई एट्रिब्यूट या चाइल्ड एलिमेंट नहीं है.

स्कीमा

हर नीति टाइप को एक्सएमएल स्कीमा (.xsd) से तय किया जाता है. रेफ़रंस के लिए, GitHub पर नीति स्कीमा उपलब्ध हैं.

गड़बड़ी कोड

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.oasvalidation.Failed 500 Request message body cannot be validated against the provided OpenAPI Specification.
steps.oasvalidation.SourceMessageNotAvailable 500

Variable specified in the <Source> element of the policy is either out of scope or cannot be resolved.

steps.oasvalidation.NotMessageVariable 500

<Source> element is set to a variable that is not of type message.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause
ResourceDoesNotExist OpenAPI Specification referenced in the <OASResource> element does not exist.
ResourceCompileFailed OpenAPI Specification that is included in the deployment contains errors that prevent it from being compiled. This generally indicates that the specification is not a well-formed OpenAPI Specification 3.0.
BadResourceURL OpenAPI Specification referenced in the <OASResource> element cannot be processed. This can occur if the file is not a JSON or YAML file or the file URL is not specified correctly.

Fault variables

These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "ResourceDoesNotExist"
oasvalidation.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. oasvalidation.myoaspolicy.failed = true

OpenAPI स्पेसिफ़िकेशन की सुविधाएं

OASValidation नीति, OpenAPI स्पेसिफ़िकेशन की उन सुविधाओं के साथ काम करती है जिनकी खास जानकारी नीचे दी गई टेबल में कैटगरी के हिसाब से दी गई है. साथ ही, उन सुविधाओं की जानकारी भी दी गई है जो काम नहीं करती हैं.

कैटगरी इनकी अनुमति है ये काम नहीं करते हैं
डेटा टाइप के फ़ॉर्मैट boolean
date
date-time
double
email
float
int32/int64
ipv4/ipv6
md5
sha1/sha256/sha512
string
uri
uri-template
uuid
बाइनरी
बाइट
पासवर्ड
डिस्क्रिमिनेटर ऑब्जेक्ट mapping
propertyName
लागू नहीं
मीडिया टाइप ऑब्जेक्ट स्कीमा कोड में बदलना
उदाहरण
उदाहरण
ऑपरेशंस ऑब्जेक्ट parameters
requestBody
responses
security (partial support)
कॉलबैक
अब काम नहीं करते
सर्वर
पैरामीटर ऑब्जेक्ट allowEmptyValue
in (query, header, path)
required
responses
schema
style (deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)

ध्यान दें: deepObject सिर्फ़ स्ट्रिंग पैरामीटर के साथ काम करता है. इसमें ऐरे और नेस्ट किए गए ऑब्जेक्ट काम नहीं करते.
allowReserved
deprecated
example
examples
content
पाथ ऑब्जेक्ट delete
get
head
options
parameters
patch
post
put
trace
variables
सर्वर
अनुरोध का मुख्य हिस्सा application/json
application/hal+json
application/x-www-form-urlencoded (encoding ऑब्जेक्ट काम नहीं करता)
content
ज़रूरी है
application/xml
multipart/form-data
text/plain
text/xml
रिस्पॉन्स ऑब्जेक्ट application/json
application/hal+json
application/x-www-form-urlencoded (encoding ऑब्जेक्ट काम नहीं करता)
content
headers
application/xml
links
text/plain
text/xml
Responses ऑब्जेक्ट डिफ़ॉल्ट
एचटीटीपी स्टेटस कोड
लागू नहीं
स्कीमा ऑब्जेक्ट $ref
additionalProperties (सिर्फ़ बूलियन फ़्लैग वैरिएंट)
allOf (additionalProperties के false होने पर अनदेखा किया जाता है)
anyOf
enum
exclusiveMaximum/exclusiveMinimum
format
items
maximum/minimum
maxItems/minItems
maxLength/minLength
maxProperties/minProperties
multipleOf
not
nullable
oneOf
pattern
properties
required
title
type
uniqueItems
deprecated
example
readOnly
writeOnly
xml
सुरक्षा स्कीम ऑब्जेक्ट in (header, query) (type के http होने पर अनदेखा किया जाता है)
name
type (apiKey, http)
bearerFormat
flows
openIdConnectUrl
scheme
सर्वर ऑब्जेक्ट url
variables
एक से ज़्यादा सर्वर की परिभाषाएं

मिलते-जुलते विषय