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

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

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

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

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

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

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

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

घटक सत्यापन का अनुरोध करें
बेसपाथ एपीआई प्रॉक्सी के बताए गए बेसपाथ की पुष्टि करता है; 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 सेक्शन में.

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

{oas.resource.url} जैसे मैसेज टेंप्लेट का इस्तेमाल करके, OpenAPI स्पेसिफ़िकेशन तय किया जा सकता है. इस मामले में, फ़्लो वैरिएबल 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> एलिमेंट में कोई एट्रिब्यूट या चाइल्ड एलिमेंट नहीं है.

<विकल्प>

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

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

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

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

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

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

डिफ़ॉल्ट वैल्यू 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 की उन सुविधाओं के साथ काम करती है जिनकी खास जानकारी कैटगरी के हिसाब से इस टेबल में दी गई है. साथ ही, उन सुविधाओं की भी सूची दी गई है जो Google Play पर काम नहीं करतीं.

कैटगरी इनकी अनुमति है इनकी अनुमति नहीं है
डेटा टाइप के फ़ॉर्मैट बूलियन
तारीख
तारीख-समय
डबल
ईमेल
फ़्लोट
int32/int64
ipv4/ipv6
md5
sha1/sha256/sha512
स्ट्रिंग
uri
uri-template
uuid
बाइनरी
बाइट
पासवर्ड
डिसिमिनेटर ऑब्जेक्ट मैपिंग
propertyName
लागू नहीं
मीडिया प्रकार ऑब्जेक्ट स्कीमा कोड में बदलने का तरीका
उदाहरण
उदाहरण
ऑपरेशन ऑब्जेक्ट पैरामीटर
requestBody
रिस्पॉन्स
सुरक्षा (आंशिक सहायता)
कॉलबैक
बंद किए गए
सर्वर
पैरामीटर ऑब्जेक्ट अनुमति खाली है
(query, header, path) में
ज़रूरी
जवाब
स्कीमा
स्टाइल (deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)

ध्यान दें: deepObject सिर्फ़ स्ट्रिंग पैरामीटर के साथ काम करता है. अरे और नेस्ट किए गए ऑब्जेक्ट काम नहीं करते.
अनुमति रिज़र्व है
रोक दी गई है
उदाहरण
उदाहरण
कॉन्टेंट
पाथ ऑब्जेक्ट मिटाएं
get
head
विकल्प
पैरामीटर
पैच
पोस्ट
put
ट्रेस
वैरिएबल
सर्वर
अनुरोध के मुख्य हिस्से में मौजूद ऑब्जेक्ट ऐप्लिकेशन/json
Application/hal+json
ऐप्लिकेशन/x-www-form-urlencoded (encoding ऑब्जेक्ट काम नहीं करता)
कॉन्टेंट
ज़रूरी है
ऐप्लिकेशन/xml
multipart/form-data
text/plain
text/xml
रिस्पॉन्स ऑब्जेक्ट ऐप्लिकेशन/json
ऐप्लिकेशन/hal+json
ऐप्लिकेशन/x-www-form-urlencoded (encoding ऑब्जेक्ट काम नहीं करता)
कॉन्टेंट
हेडर
ऐप्लिकेशन/xml
लिंक
टेक्स्ट/सादा
टेक्स्ट/xml
रिस्पॉन्स ऑब्जेक्ट डिफ़ॉल्ट
एचटीटीपी स्टेटस कोड
लागू नहीं
स्कीमा ऑब्जेक्ट $ref
additionalProperties (सिर्फ़ बूलियन फ़्लैग वाले वैरिएंट)
allOf (अगर additionalProperties false है, तो इसे अनदेखा किया जाता है)
anyOf
enum
खासज़्यादा/खास कम से कम
format
items
items/minLength
maxitems/min Items
maxLength/minLength
maxProperties/minProperties
not
nullable
oneOf
pattern
ज़रूरी है




अब काम नहीं करता
उदाहरण
readOnly
writeOnly
xml
सिक्योरिटी स्कीम ऑब्जेक्ट (header, query) में (अगर type http है, तो इसे अनदेखा किया जाता है)
नाम
टाइप (apiKey, http)
बियररफ़ॉर्मैट
फ़्लो
openIdConnectUrl
स्कीम
सर्वर ऑब्जेक्ट यूआरएल
वैरिएबल
एक से ज़्यादा सर्वर की परिभाषाएं

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