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

आपको Apigee Edge से जुड़ा दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
info

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

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

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

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

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

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

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

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

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

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

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

सैंपल

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

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

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

<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 यूज़र इंटरफ़ेस (यूआई) में अपने फ़्लो में ओएएस की पुष्टि करने की नीति जोड़ने पर, डिफ़ॉल्ट सेटिंग दिखाई गई हैं:

<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 सेक्शन में.

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

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

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

सिंटैक्स

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

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

उदाहरण

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

<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 स्पेसिफ़िकेशन में, कार्रवाई के अनुरोध के मुख्य हिस्से के स्कीमा के हिसाब से, मैसेज के मुख्य हिस्से की पुष्टि करनी चाहिए या नहीं. मैसेज के मुख्य हिस्से के कॉन्टेंट की पुष्टि करने के लिए, इसे true पर सेट करें. सिर्फ़ यह पुष्टि करने के लिए कि मैसेज का मुख्य हिस्सा मौजूद है, इसे false पर सेट करें.

पुष्टि करने से जुड़ी गड़बड़ी के बाद, फ़्लो को जारी रखना है या नहीं, यह कंट्रोल किया जा सकता है. इसके लिए, <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 स्पेसिफ़िकेशन में तय नहीं किए गए हैं, तो यह नीति के काम करने के तरीके को कॉन्फ़िगर करता है.

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

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

सिंटैक्स

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

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

उदाहरण

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

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

<Query> (<AllowUnspecifiedParameters> का चाइल्ड)

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

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

डिफ़ॉल्ट वैल्यू सही
ज़रूरी है? बूलियन
समस्या जटिल टाइप
पैरंट एलिमेंट <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 स्पेसिफ़िकेशन में तय नहीं किए गए हैं, तो यह नीति के व्यवहार को कॉन्फ़िगर करता है.

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

डिफ़ॉल्ट वैल्यू सही
ज़रूरी है? बूलियन
समस्या जटिल टाइप
पैरंट एलिमेंट <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 पर सेट किया जाता है, क्योंकि आपको क्लाइंट ऐप्लिकेशन से आने वाले अनुरोधों का आकलन करना होगा. जवाब वाले मैसेज का आकलन करने के लिए, response पर सेट करें. जब नीति को अनुरोध फ़्लो से अटैच किया जाता है, तो अनुरोध मैसेज का अपने-आप आकलन करने के लिए, इसे message पर सेट करें. साथ ही, जब नीति को जवाब फ़्लो से अटैच किया जाता है, तो जवाब मैसेज का अपने-आप आकलन करने के लिए, इसे message पर सेट करें.

डिफ़ॉल्ट वैल्यू 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
binary
byte
password
Discriminator ऑब्जेक्ट mapping
propertyName
लागू नहीं
मीडिया टाइप ऑब्जेक्ट स्कीमा एन्कोडिंग
उदाहरण
उदाहरण
Operations ऑब्जेक्ट parameters
requestBody
responses
security (कुछ हद तक काम करता है)
callbacks
deprecated
servers
पैरामीटर ऑब्जेक्ट allowEmptyValue
in (query, header, path)
required
responses
schema
style (deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)

ध्यान दें: deepObject सिर्फ़ स्ट्रिंग पैरामीटर के साथ काम करता है. इसमें अरे और नेस्ट किए गए ऑब्जेक्ट काम नहीं करते.
allowReserved
deprecated
example
examples
content
Paths ऑब्जेक्ट 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
Response object application/json
application/hal+json
application/x-www-form-urlencoded (encoding ऑब्जेक्ट काम नहीं करता)
content
headers
application/xml
links
text/plain
text/xml
Responses ऑब्जेक्ट default
एचटीटीपी स्टेटस कोड
लागू नहीं
स्कीमा ऑब्जेक्ट $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
सुरक्षा स्कीम ऑब्जेक्ट (header, query) में (अगर type, http है, तो इसे अनदेखा कर दिया जाता है)
name
type (apiKey, http)
bearerFormat
flows
openIdConnectUrl
scheme
सर्वर ऑब्जेक्ट url
variables
एक से ज़्यादा सर्वर की परिभाषाएं

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