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>

name एट्रिब्यूट के साथ-साथ, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में नीति को लेबल करने के लिए, किसी ऐसे नाम का इस्तेमाल करें जो ज़्यादा सामान्य और आसानी से समझ में आए.

<DisplayName> एलिमेंट सभी नीतियों में एक जैसा होता है.

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

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

सिंटैक्स

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

उदाहरण

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

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

<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 पर नीति स्कीमा उपलब्ध हैं.

गड़बड़ी के कोड

यह सेक्शन गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताता है. साथ ही, इस नीति के ट्रिगर होने पर Edge की मदद से सेट की गई गड़बड़ी के वैरिएबल के बारे में बताता है. यह जानकारी जानना ज़रूरी है कि क्या गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बनाए जा रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी और गड़बड़ियों को ठीक करने के तरीके देखें.

रनटाइम से जुड़ी गड़बड़ियां

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी का कोड एचटीटीपी कोड स्थिति वजह
steps.oasvalidation.Failed 500 दिए गए OpenAPI निर्देशों के हिसाब से, अनुरोध के मैसेज के मुख्य हिस्से की पुष्टि नहीं की जा सकती.
steps.oasvalidation.SourceMessageNotAvailable 500

नीति के <Source> एलिमेंट में दिया गया वैरिएबल या तो दायरे से बाहर है या उसे हल नहीं किया जा सकता.

steps.oasvalidation.NotMessageVariable 500

<Source> एलिमेंट ऐसे वैरिएबल पर सेट है जो message टाइप नहीं है.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.

गड़बड़ी का नाम वजह
ResourceDoesNotExist <OASResource> एलिमेंट में बताया गया OpenAPI स्पेसिफ़िकेशन मौजूद नहीं है.
ResourceCompileFailed डिप्लॉयमेंट में शामिल OpenAPI स्पेसिफ़िकेशन में ऐसी गड़बड़ियां हैं जो इसे कंपाइल होने से रोकती हैं. इससे आम तौर पर यह पता चलता है कि यह खास जानकारी, अच्छी तरह से बनाई गई OpenAPI स्पेसिफ़िकेशन 3.0 नहीं है.
BadResourceURL <OASResource> एलिमेंट में दिया गया OpenAPI स्पेसिफ़िकेशन प्रोसेस नहीं किया जा सकता. ऐसा तब हो सकता है, जब फ़ाइल, JSON या YAML फ़ाइल न हो या फ़ाइल का यूआरएल सही तरीके से न दिया गया हो.

गड़बड़ी वाले वैरिएबल

ये वैरिएबल तब सेट किए जाते हैं, जब यह नीति रनटाइम के दौरान कोई गड़बड़ी ट्रिगर करती है. ज़्यादा जानकारी के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी देखें.

वैरिएबल जगह उदाहरण
fault.name="fault_name" fault_name, गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम की गड़बड़ियां टेबल में दिया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. fault.name Matches "ResourceDoesNotExist"
oasvalidation.policy_name.failed policy_name, उस नीति का उपयोगकर्ता तय किया गया नाम है जिसकी वजह से गड़बड़ी हुई है. 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
एक से ज़्यादा सर्वर की परिभाषाएं

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