निकालें वैरिएबल नीति

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

क्या

ExtractVariables नीति किसी अनुरोध या जवाब से कॉन्टेंट निकालती है और एक वैरिएबल जोड़ा जा सकता है. आपके पास मैसेज का कोई भी हिस्सा एक्सट्रैक्ट करने का विकल्प होता है. इसमें हेडर, यूआरआई पाथ, JSON/एक्सएमएल पेलोड, फ़ॉर्म शामिल हैं पैरामीटर, और क्वेरी पैरामीटर. यह नीति, मैसेज पर टेक्स्ट पैटर्न लागू करके काम करती है कॉन्टेंट और मिलता-जुलता कॉन्टेंट मिलने पर, तय किए गए मैसेज कॉन्टेंट के साथ वैरिएबल सेट करता है.

वैसे तो आप किसी अनुरोध या जवाब वाले मैसेज से जानकारी निकालने के लिए अक्सर इस नीति का इस्तेमाल करते हैं, लेकिन आप का इस्तेमाल दूसरे सोर्स से जानकारी निकालने के लिए भी किया जा सकता है. इनमें, AccessEntity की नीति, एक्सएमएल ऑब्जेक्ट या JSON ऑब्जेक्ट.

तय किए गए मैसेज का कॉन्टेंट एक्सट्रैक्ट करने के बाद, इस वैरिएबल का रेफ़रंस दूसरे नीति का पालन करना ज़रूरी है.

वीडियो

ExtractVariables की नीति के बारे में ज़्यादा जानने के लिए ये वीडियो देखें.

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

सैंपल

नीति कोड के ये सैंपल दिखाते हैं कि नीचे दिए गए टाइप के वैरिएबल से वैरिएबल कैसे निकालें आर्टफ़ैक्ट:

GitHub

ये लिंक, काम करने वाले ऐसे एपीआई प्रॉक्सी सैंपल पर ले जाते हैं जिन्हें आप Edge पर डिप्लॉय कर सकते हैं और चला सकते हैं. वे ExtractVariables का इस्तेमाल करते हैं और वे Apigee के api-platform-सैंपल रिपॉज़िटरी में मौजूद हैं, जहां GitHub. READMEs बताते हैं कि हर केस में ExtractVariables का इस्तेमाल कैसे किया जाता है. साथ ही, प्रत्येक नमूने को चलाएं.

यूआरआई

<ExtractVariables name="ExtractVariables-1">
   <DisplayName>Extract a portion of the url path</DisplayName>
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/accounts/{id}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

ऊपर दिए गए नीति कोड का उदाहरण देखें. <URIPath> एलिमेंट से यह पता चलता है यूआरआई पाथ से जानकारी निकालने के लिए ExtractVariables नीति का इस्तेमाल करें. कॉन्टेंट बनाने <Pattern> एलिमेंट, यूआरआई पाथ पर लागू होने वाला पैटर्न बताता है. कॉन्टेंट बनाने पैटर्न को एक सामान्य टेंप्लेट के तौर पर माना जाता है. इसमें कर्ली ब्रैकेट अलग-अलग हिस्से को दिखाते हैं का यूआरआई पाथ का इस्तेमाल किया जा रहा है.

सेट किए जाने वाले वैरिएबल का नाम, <VariablePrefix> एलिमेंट और कर्ली ब्रैकेट {} में मौजूद वैल्यू <Pattern> एलिमेंट में. दोनों वैल्यू को इंटरवेंशन डॉट से जोड़ा जाता है, जिससे उदाहरण के लिए, urirequest.id का वैरिएबल नाम मिलेगा. अगर कोई <VariablePrefix> एलिमेंट का इस्तेमाल करता है, तो वैरिएबल का नाम सिर्फ़ वैल्यू होता है कर्ली ब्रेसेस में.

ऊपर दिए गए नीति कोड के नमूने को, आने वाले इन अनुरोधों के साथ काम करें:

GET http://org1-test.apigee.net/svc1/accounts/12797282

मान लीजिए कि एपीआई प्रॉक्सी का बेसपाथ /svc1 है. जब Apigee Edge इन शर्तों को लागू करता है इस इनकमिंग अनुरोध के ऊपर ExtractVariables नीति कोड को सेट करता है, यह वैरिएबल को सेट करता है 12797282 के लिए urirequest.id. Apigee Edge की मदद से नीति लागू करने के बाद, प्रोसेसिंग फ़्लो की बाद की नीतियां या कोड, स्ट्रिंग की वैल्यू 12797282 पाने के लिए, urirequest.id.

उदाहरण के लिए, नीचे दी गई AssignmentsMessage नीति, उस वैरिएबल की वैल्यू को अनुरोध के नए मैसेज का पेलोड:

<AssignMessage async="false" continueOnError="false" enabled="true" name="AssignPayload">
 <DisplayName>AssignPayload</DisplayName>
  <Set>
   <Payload contentType="text/xml">
    <IdExtractedFromURI>{urirequest.id}</IdExtractedFromURI>
   </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="true" transport="http" type="request">newRequest</AssignTo>
</AssignMessage>

क्वेरी पैरामीटर

<ExtractVariables name="ExtractVariables-2">
   <DisplayName>Extract a value from a query parameter</DisplayName>
   <Source>request</Source>
   <QueryParam name="code">
      <Pattern ignoreCase="true">DBN{dbncode}</Pattern>
   </QueryParam>
   <VariablePrefix>queryinfo</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

ऊपर दिए गए नीति कोड के नमूने को, आने वाले इन अनुरोधों के साथ काम करें:

GET http://org1-test.apigee.net/accounts/12797282?code=DBN88271

जब Apigee Edge, आने वाले इस अनुरोध के लिए ऊपर मौजूद ExtractVariables नीति कोड को लागू करता है, तो यह वैरिएबल queryinfo.dbncode को 88271 पर सेट करता है. Apigee Edge के बाद नीति को लागू करता है, तो प्रोसेसिंग फ़्लो में आने वाली बाद की नीतियां या कोड ये देख सकते हैं: स्ट्रिंग की वैल्यू 88271 पाने के लिए, queryinfo.dbncode नाम वाला वैरिएबल.

अब आपके पास अपनी प्रॉक्सी में वैरिएबल queryinfo.dbncode को ऐक्सेस करने का विकल्प है. उदाहरण के लिए, नीचे दी गई AssignmentsMessage नीति, इसे अनुरोध के पेलोड में कॉपी करती है:

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
 <DisplayName>GetQP</DisplayName>
  <Set>
   <Payload contentType="text/xml">
    <ExtractQP>{queryinfo.dbncode}</ExtractQP>
   </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

एक से ज़्यादा पैरामीटर

<ExtractVariables name="ExtractVariables-2">
   <DisplayName>Extract a value from a query parameter</DisplayName>
   <Source>request</Source>
   <QueryParam name="w">
      <Pattern ignoreCase="true">{firstWeather}</Pattern>
   </QueryParam>
   <QueryParam name="w.2">
     <Pattern ignoreCase="true">{secondWeather}</Pattern>
   </QueryParam>
   <VariablePrefix>queryinfo</VariablePrefix>
 <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

मान लें कि आपके एपीआई डिज़ाइन की मदद से, एक से ज़्यादा क्वेरी पैरामीटर तय किए जा सकते हैं नाम. इस नीति का इस्तेमाल करके, किसी क्वेरी के एक से ज़्यादा इंस्टेंस की वैल्यू एक्सट्रैक्ट की जा सकती है पैरामीटर "w". ExtractVariables नीति में इन क्वेरी पैरामीटर का रेफ़रंस देने के लिए, आपको इंडेक्स का इस्तेमाल करता है, जहां क्वेरी पैरामीटर के पहले इंस्टेंस में कोई इंडेक्स नहीं है और दूसरा इंडेक्स 2, इंडेक्स 3 में तीसरा वगैरह.

ऊपर दिए गए नीति कोड के नमूने को, आने वाले इन अनुरोधों के साथ काम करें:

GET http://org1-test.apigee.net/weather?w=Boston&w=Chicago

जब Apigee Edge, आने वाले इस अनुरोध के लिए ऊपर मौजूद ExtractVariables नीति कोड को लागू करता है, तो यह वैरिएबल queryinfo.firstWeather को Boston पर सेट करता है और वैरिएबल queryInfo.secondWeather से Chicago तक.

अब आपके पास queryinfo.firstWeather वैरिएबल का ऐक्सेस है और इसमें queryinfo.secondWeather इसमें आपका प्रॉक्सी. उदाहरण के लिए, नीचे दी गईassignMessage नीति इसे अनुरोध:

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
 <DisplayName>GetQP</DisplayName>
  <Set>
   <Payload contentType="text/xml">
    <ExtractQP1>{queryinfo.firstWeather}</ExtractQP1>
    <ExtractQP2>{queryinfo.secondWeather}</ExtractQP2>
   </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

हेडर

<ExtractVariables name='ExtractVariable-OauthToken'>
  <Source>request</Source>
  <Header name="Authorization">
    <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern>
  </Header>
  <VariablePrefix>clientrequest</VariablePrefix>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

मान लीजिए कि आपका एपीआई, OAuth v2.0 बेयरर टोकन का इस्तेमाल करता है. ऊपर दिए गए नीति कोड का नमूना देखें वह OAuth v2.0 टोकन वाले अनुरोध के साथ काम करते हैं, जिसमें इस तरह का हेडर होता है: Authorization: Bearer TU08xptfFfeM7aS0xHqlxTgEAdAM. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

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

जब Apigee Edge इस हेडर के ऊपर ExtractVariables नीति कोड को लागू करता है, तो यह वैरिएबल clientrequest.oauthtoken को इस पर सेट करें TU08xptfFfeM7aS0xHqlxTgEAdAM.

अब आपके पास यहां वैरिएबल clientrequest.oauthtoken को ऐक्सेस करने का विकल्प है: प्रॉक्सी. उदाहरण के लिए, नीचे दी गईassignMessage नीति इसे अनुरोध:

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
 <DisplayName>GetHeader</DisplayName>
  <Set>
   <Payload contentType="text/xml">
    <ExtractHeader>{clientrequest.oauthtoken}</ExtractHeader>
   </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

JSON

<ExtractVariables name="ExtractVariables-3">
   <Source>response</Source>
   <JSONPayload>
      <Variable name="latitude" type="float">
         <JSONPath>$.results[0].geometry.location.lat</JSONPath>
      </Variable>
      <Variable name="longitude" type="float">
         <JSONPath>$.results[0].geometry.location.lng</JSONPath>
      </Variable>
   </JSONPayload>
   <VariablePrefix>geocoderesponse</VariablePrefix>
</ExtractVariables>
<JSONPayload>$

इस JSON रिस्पॉन्स पेलोड को ध्यान में रखें:

{
  "results": [{
    "geometry": {
      "location": {
        "lat": 37.42291810,
        "lng": -122.08542120
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "northeast": {
          "lat": 37.42426708029149,
          "lng": -122.0840722197085
        },
        "southwest": {
          "lat": 37.42156911970850,
          "lng": -122.0867701802915
        }
      }
    }
  }]
}

जब Apigee Edge, इस JSON मैसेज के लिए ऊपर मौजूद ExtractVariables नीति कोड को लागू करता है, तो दो वैरिएबल सेट करता है: geocoderesponse.latitude और geocoderesponse.longitude. दोनों वैरिएबल एक जैसे वैरिएबल प्रीफ़िक्स का इस्तेमाल करते हैं geocoderesponse. इन वैरिएबल के लिए सफ़िक्स, साफ़ तौर पर <Variable> एलिमेंट का name एट्रिब्यूट.

वैरिएबल geocoderesponse.latitude को मान मिलता है 37.42291810. वैरिएबल geocoderesponse.longitude को मान मिलता है -122.08542120.

अब आपके पास यहां वैरिएबल geocoderesponse.latitude को ऐक्सेस करने का विकल्प है: प्रॉक्सी. उदाहरण के लिए, नीचे दी गई AssignmentsMessage नीति इसे "अक्षांश" नाम के हेडर में कॉपी करती है इस जवाब में:

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
  <DisplayName>GetJSONVar</DisplayName>
  <Add>
    <Headers>
      <Header name="latitude">{geocoderesponse.latitude}</Header>
    </Headers>
  </Add> 
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="response"/> 
</AssignMessage>

XML

<ExtractVariables name="ExtractVariables-4">
   <Source>response</Source>
   <XMLPayload>
      <Namespaces>
         <Namespace prefix="dir">urn:43BFF88D-D204-4427-B6BA-140AF393142F</Namespace>
      </Namespaces>
      <Variable name="travelmode" type="string">
         <XPath>/dir:Directions/dir:route/dir:leg/dir:step/@mode</XPath>
      </Variable>
      <Variable name="duration" type="string">
         <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:value</XPath>
      </Variable>
      <Variable name="timeunit" type="string">
         <XPath>/dir:Directions/dir:route/dir:leg/dir:step/dir:duration/dir:text</XPath>
      </Variable>
   </XMLPayload>
   <VariablePrefix>directionsresponse</VariablePrefix>
</ExtractVariables>
<XMLPayload>

इस एक्सएमएल रिस्पॉन्स पेलोड पर विचार करें:

<Directions xmlns="urn:43BFF88D-D204-4427-B6BA-140AF393142F">
   <status>OK</status>
   <route>
      <summary>I-40 W</summary>
      <leg>
         <step mode="DRIVING">
            <start_location>
               <lat>41.8507300</lat>
               <lng>-87.6512600</lng>
            </start_location>
            <end_location>
               <lat>41.8525800</lat>
               <lng>-87.6514100</lng>
            </end_location>
            <duration>
                <value>19</value>
                <text>minutes</text>
            </duration>
         </step>
      </leg>
   </route>
</Directions>

जब Apigee Edge इस एक्सएमएल मैसेज के ऊपर, ExtractVariables नीति कोड को लागू करता है, तो वह तीन वैरिएबल सेट करता है: directionsresponse.travelmode, directionsresponse.duration और directionsresponse.timeunit. सभी वैरिएबल directionsresponse के समान वैरिएबल प्रीफ़िक्स का इस्तेमाल करते हैं. इसके लिए प्रत्यय ये वैरिएबल साफ़ तौर पर <Variable> एलिमेंट के ज़रिए तय किए जाते हैं name एट्रिब्यूट की वैल्यू सबमिट करें.

वैरिएबल directionsresponse.travelmode को मान मिलता है DRIVING. वैरिएबल directionsresponse.duration को मान मिलता है 19. वैरिएबल directionsresponse.timeunit को मान मिलता है minutes.

अब आप यहां से directionresponse.travelmode वैरिएबल को ऐक्सेस कर सकते हैं आपका प्रॉक्सी. उदाहरण के लिए, नीचे दी गई AssignmentsMessage नीति, इसे हेडर में कॉपी करती है "tmode" इस जवाब में:

<AssignMessage async="false" continueOnError="false" enabled="true" name="GetURIPath">
  <DisplayName>GetXMLVar</DisplayName>
  <Add>
    <Headers>
      <Header name="tmode">{directionsresponse.travelmode}</Header>
    </Headers>
  </Add>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

ExtractVariables नीति के बारे में

एपीआई डेवलपर, एपीआई प्रॉक्सी बनाते हैं, जो मैसेज के कॉन्टेंट के आधार पर अलग-अलग तरह से काम करते हैं, इसमें हेडर, यूआरआई पाथ, पेलोड, और क्वेरी पैरामीटर शामिल हैं. अक्सर, प्रॉक्सी सर्वर इस कॉन्टेंट का एक हिस्सा है. यह करने के लिए ExtractVariables नीति का इस्तेमाल करें यह.

ExtractVariables नीति को तय करते समय, आप ये चुन सकते हैं:

  • सेट किए जाने वाले वैरिएबल के नाम
  • वैरिएबल का सोर्स
  • कितने वैरिएबल एक्सट्रैक्ट और सेट करने हैं

लागू होने पर, यह नीति, कॉन्टेंट पर एक टेक्स्ट पैटर्न लागू करती है. साथ ही, मिलता-जुलता पैटर्न मिलने पर, यह नीति सेट कर देती है कॉन्टेंट के साथ तय किए गए वैरिएबल की वैल्यू. इसके बाद, अन्य नीतियों और कोड का इस्तेमाल किया जा सकता है उन वैरिएबल का इस्तेमाल करके डाइनैमिक बिहेवियर को चालू किया जा सकता है या कारोबार का डेटा Edge API Analytics को भेजा जा सकता है.

कॉन्टेंट पर आधारित Analytics रिपोर्ट बनाने के लिए, ExtractVariables का इस्तेमाल करने का तरीका जानने के लिए, देखें विश्लेषण करें एपीआई मैसेज का कॉन्टेंट, जो कस्टम ऐनलिटिक्स का इस्तेमाल करता हो.

दायरा

ExtractVariables नीति के साथ सेट किए गए वैरिएबल का ग्लोबल स्कोप होता है. इसका मतलब है कि ExtractVariables की नीति एक नए वैरिएबल के बारे में बताती है, तो आप उस वैरिएबल को किसी भी नीति से ऐक्सेस कर सकते हैं या कोड को फ़्लो के किसी भी चरण में डालें (जो ExtractVariables नीति के बाद एक्ज़ीक्यूट करता है). यह शामिल हैं:

  • PreFlow: ProxyEndpoint और TargetEndpoint (अनुरोध और जवाब)
  • PostFlow: ProxyEndpoint और TargetEndpoint (अनुरोध और जवाब)
  • PostClientFlow: ProxyEndpoint (सिर्फ़ रिस्पॉन्स के लिए, मैसेज लॉग करने की नीति)
  • गड़बड़ी का फ़्लो

मैचिंग और वैरिएबल बनाने के बारे में जानकारी

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

हालांकि, पैटर्न मैचिंग के काम करने का तरीका, एक्सट्रैक्शन के सोर्स पर निर्भर करता है. नीचे दिए गए सेक्शन में, जानकारी की दो बुनियादी कैटगरी के बारे में बताया गया है, जिसे एक्सट्रैक्ट किया जा सकता है.

मिलते-जुलते यूआरआई पाथ, क्वेरी पैरामीटर, हेडर, फ़ॉर्म पैरामीटर, और वैरिएबल

यूआरआई पाथ, क्वेरी पैरामीटर, हेडर, फ़ॉर्म पैरामीटर, और वैरिएबल, जिनके लिए आप एक या उससे ज़्यादा की वैल्यू तय करने के लिए, &lt;Pattern&gt; टैग का इस्तेमाल करते हैं मिलान करने के लिए पैटर्न. उदाहरण के लिए, नीति का यह उदाहरण यूआरआई पाथ:

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

इस उदाहरण में, urirequest.pathSeg वैरिएबल सेट किया गया है जो भी प्रॉक्सी.pathsuffix में "/a/" के बाद दिखाई देती है. उदाहरण के लिए, मान लें कि आपका एपीआई प्रॉक्सी /basepath/v1 है . इनबाउंड अनुरोध के साथ http://myCo.com/basepath/v1/a/b पर वैरिएबल को "b" पर सेट किया गया है.

एक से ज़्यादा पैटर्न तय करना

&lt;Pattern&gt; टैग के हिसाब से, मैच करने के लिए कई पैटर तय किए जा सकते हैं, जहां:

  • मैच के लिए सभी पैटर्न की जांच की जाती है.
  • अगर कोई भी पैटर्न मैच नहीं करता है, तो नीति कुछ भी नहीं करती है और वैरिएबल बनाया गया.
  • यदि एक से अधिक पैटर्न मेल खाते हैं, तो सबसे लंबे पथ सेगमेंट वाले पैटर्न का उपयोग एक्सट्रैक्शन.
  • यदि मेल खाने वाले दो पैटर्न में एक समान सबसे लंबे पथ सेगमेंट हैं, तो इस नीति का इस्तेमाल एक्सट्रैक्ट करने के लिए किया जाता है.

अगले उदाहरण में, एक ऐसी नीति बनाई गई है जिसमें यूआरआई के तीन मिलते-जुलते पैटर्न शामिल हैं पथ:

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

मान लीजिए कि /basepath/v1 के बेसपाथ वाले एपीआई प्रॉक्सी के लिए, इनबाउंड अनुरोध यूआरएल की सेटिंग इस तरह की होती है:

http://myCo.com/basepath/v1/a/b

इस उदाहरण में, पहला पैटर्न, यूआरआई से मैच करता है और urirequest.pathSeg वैरिएबल है "b" पर सेट होना चाहिए.

अगर अनुरोध किया जाने वाला यूआरएल यह है:

http://myCo.com/basepath/v1/a/b/c/d

...फिर तीसरा पैटर्न मैच करता है और urirequest.pathSeg वैरिएबल होता है "d" पर सेट है.

एक से ज़्यादा वैरिएबल वाले पैटर्न तय करना

मैच करने वाले पैटर्न में, एक से ज़्यादा वैरिएबल तय किए जा सकते हैं. उदाहरण के लिए, आपने दो वैरिएबल वाला मैचिंग पैटर्न:

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/{pathSeg1}/c/{pathSeg2}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

इनबाउंड अनुरोध के लिए , फिर से /basepath/v1 के बेस पाथ के साथ एपीआई प्रॉक्सी दिखाना यूआरएल:

http://myCo.com/basepath/v1/a/b/c/d

...urirequest.pathSeg1 वैरिएबल है "b" पर सेट किया गया और urirequest.pathSeg2 वैरिएबल है "d" पर सेट है.

पैटर्न में एक से ज़्यादा इंस्टेंस का मिलान करना

एक ही नाम वाले किसी आइटम के एक से ज़्यादा इंस्टेंस होने पर भी पैटर्न का मिलान किया जा सकता है. उदाहरण के लिए, ऐसा अनुरोध किया जा सकता है जिसमें एक से ज़्यादा क्वेरी पैरामीटर या एक से ज़्यादा हेडर हों पर क्लिक करें. नीचे दिए गए अनुरोध में "w" नाम के दो क्वेरी पैरामीटर शामिल हैं:

http://myCo.com/basepath/v1/a/b/c/d?w=1&w=2

ExtractVariables नीति में इन क्वेरी पैरामीटर का रेफ़रंस देने के लिए, इंडेक्स का इस्तेमाल करें, जहां क्वेरी पैरामीटर के पहले इंस्टेंस में कोई इंडेक्स नहीं है, दूसरा इंडेक्स 2 पर, तीसरा इंडेक्स 3 वगैरह का एक उदाहरण है. उदाहरण के लिए, नीचे दी गई नीति दूसरे क्वेरी पैरामीटर की वैल्यू को एक्सट्रैक्ट करती है नाम "w" अनुरोध में:

<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <QueryParam name="w.2">
      <Pattern ignoreCase="true">{secondW}</Pattern>
   </QueryParam>
   <VariablePrefix>urirequest</VariablePrefix>
   <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

urirequest.secondW वैरिएबल यह है "2" पर सेट करें. अगर अनुरोध में दूसरा क्वेरी पैरामीटर शामिल नहीं किया जाता है, तो urirequest.secondW वैरिएबल खाली. अगर अनुरोध में एक ही नाम वाले कई आइटम हैं, तो उन्हें इंडेक्स करने की सुविधा का इस्तेमाल करें.

पैटर्न में विशेष वर्णों का इस्तेमाल करना

यूआरआई पाथ का मिलान करते समय, "*" का इस्तेमाल किया जा सकता है और "**" पैटर्न में वाइल्डकार्ड वर्ण, कहां:

  • "*" पाथ के किसी एक सेगमेंट से मेल खाता हो
  • "**" पाथ के एक से ज़्यादा सेगमेंट से मेल खाता है

उदाहरण के लिए, &lt;URIPath&gt; एलिमेंट के पैटर्न बताए गए हैं, जैसा कि दिखाया गया है नीचे दिया गया है:

<URIPath>
  <Pattern ignoreCase="true">/a/*/{id}</Pattern>
  <Pattern ignoreCase="true">/a/**/{id}</Pattern>
</URIPath>

पहला पैटर्न, पाथफ़ीक्स वाले अनुरोधों से मेल खाता है (जो नीचे दिए गए यूआरआई पाथ का हिस्सा है (बेसपाथ) जैसे "/a/b/c", "/a/foo/bar" वगैरह. दूसरा पैटर्न कितने भी पाथ से मेल खाता है "/a/" के बाद सेगमेंट, जैसे कि "/a/foo/bar/baz/c" और "/a/b/c" और "/a/foo/bar".

क्वेरी पैरामीटर, हेडर, और फ़ॉर्म पैरामीटर में पैटर्न तय करते समय, "*" वर्ण वर्णों की किसी भी संख्या से मिलान करने के लिए निर्दिष्ट करता है. उदाहरण के लिए, हेडर का मिलान करते समय, पैटर्न इस रूप में:

*;charset={encoding}

यह पैटर्न "text/xml;charset=UTF-16" वैल्यू से मेल खाता है और "application/xml;charset=ASCII".

अगर ExtractVariables नीति में पास की गई वैल्यू में एक खास वर्ण है, जैसे "{", "%" इस्तेमाल करें वर्ण शामिल करें. नीचे दिए गए उदाहरण में "{" और "}" वर्ण पैटर्न में बदल सकते हैं, क्योंकि उनका इस्तेमाल क्वेरी की वैल्यू में लिटरल वर्णों के तौर पर किया जाता है पैरामीटर:

<QueryParam>
  <Pattern ignoreCase="true">%{user%} {name}</Pattern>
</QueryParam>

इस उदाहरण में, पैटर्न "{user} स्टीव" से मेल खाता है लेकिन "उपयोगकर्ता" स्टीव".

JSON और एक्सएमएल से मिलता-जुलता

JSON और XML से डेटा एक्सट्रैक्ट करते समय, आप नीति में एक या उससे ज़्यादा &lt;Variable&gt; टैग तय करते हैं. &lt;Variable&gt; टैग उस डेस्टिनेशन वैरिएबल का नाम जहां निकाली गई जानकारी सेव की जाती है और JsonPath (JSON) या XPATH (एक्सएमएल) को एक्सट्रैक्ट किया जाएगा.

नीति में मौजूद सभी &lt;Variable&gt; टैग का मूल्यांकन किया जाता है, ताकि आप एक ही नीति से कई वैरिएबल पॉप्युलेट कर सकें. अगर आपने &lt;Variable&gt; टैग JSON या XML के किसी मान्य फ़ील्ड में मूल्यांकन करते हैं, तो संबंधित वैरिएबल नहीं होता है बनाया गया.

इस उदाहरण में, ExtractVariables की नीति को दिखाया गया है जो किसी जवाब का JSON मुख्य हिस्सा:

<ExtractVariables name="ExtractVariables-3">
   <Source>response</Source>
   <JSONPayload>
      <Variable name="latitude" type="float">
         <JSONPath>$.results[0].geometry.location.lat</JSONPath>
      </Variable>
      <Variable name="longitude" type="float">
         <JSONPath>$.results[0].geometry.location.lng</JSONPath>
      </Variable>
   </JSONPayload>
   <VariablePrefix>geocoderesponse</VariablePrefix>
</ExtractVariables>

इसमें कई जगहों पर एक ही वैरिएबल

सेट करने के लिए वैरिएबल के नाम चुनते समय सावधानी बरतें. नीति, क्रम से एक्सट्रैक्शन पैटर्न से अंतिम तक. अगर नीति, किसी वैरिएबल पर कई जगहों पर डाला गया है, तो नीति में आखिरी बार लिखा गया वैरिएबल, वैरिएबल की वैल्यू तय करता है. (यह जो आपको चाहिए.)

उदाहरण के लिए, आपको ऐसी टोकन वैल्यू एक्सट्रैक्ट करनी है जिसे क्वेरी पैरामीटर में पास किया जा सके हेडर में दिखेगी, जैसा कि नीचे दिखाया गया है:

<!-- If token only in query param, the query param determines the value. 
     If token is found in both the query param and header, header sets value. -->
<QueryParam name="token">
  <Pattern ignoreCase="true">{tokenValue}</Pattern>
</QueryParam>
 
<!-- Overwrite tokenValue even if it was found in query parameter. -->
<Header name="Token">
  <Pattern ignoreCase="true">{tokenValue}</Pattern>
</Header>

यह तय करना कि कोई मैच न होने पर क्या होता है

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

एक विकल्प यह है कि <IgnoreUnresolvedVariables> को इस पर सेट किया जाए 'सही' पर सेट करें, जो ट्रीटमेंट के लिए नीति को कॉन्फ़िगर करने के लिए, वैरिएबल का रेफ़रंस देती है खाली स्ट्रिंग (शून्य) के तौर पर, ऐसा कोई वैरिएबल जिसे हल नहीं किया जा सकता:

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>

एलिमेंट का रेफ़रंस

एलिमेंट का रेफ़रंस, ExtractVariables के एलिमेंट और एट्रिब्यूट के बारे में बताता है की नीति देखें.

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
   <DisplayName>Extract Variables 1</DisplayName>
   <Source clearPayload="true|false">request</Source>
   <VariablePrefix>myprefix</VariablePrefix>
   <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
   <URIPath>
      <Pattern ignoreCase="false">/accounts/{id}</Pattern>
   </URIPath>
   <QueryParam name="code">
      <Pattern ignoreCase="true">DBN{dbncode}</Pattern>
   </QueryParam>
   <Header name="Authorization">
      <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern>
   </Header>
   <FormParam name="greeting">
      <Pattern>hello {user}</Pattern>
   </FormParam>
   <Variable name="request.content">
       <Pattern>hello {user}</Pattern>
   </Variable>
   <JSONPayload>
      <Variable name="name">
         <JSONPath>{example}</JSONPath>
      </Variable>
   </JSONPayload>
   <XMLPayload stopPayloadProcessing="false">
      <Namespaces/>
      <Variable name="name" type="boolean">
         <XPath>/test/example</XPath>
      </Variable>
   </XMLPayload>
</ExtractVariables>

&lt;ExtractVariables&gt; एट्रिब्यूट

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">

यहां दी गई टेबल में, ऐसे एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट में एक जैसे होते हैं:

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
name

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

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

लागू नहीं ज़रूरी है
continueOnError

किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए false पर सेट करें. यह उम्मीद है व्यवहार की जानकारी देने वाला डेटा.

नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे true पर सेट करें विफल होता है.

गलत वैकल्पिक
enabled

नीति को लागू करने के लिए, true पर सेट करें.

नीति को बंद करने के लिए, false पर सेट करें. नीति लागू किया जाता है, भले ही वह किसी फ़्लो से जुड़ा रहता हो.

सही वैकल्पिक
async

यह एट्रिब्यूट अब काम नहीं करता.

गलत बहिष्कृत

&lt;DisplayName&gt; एलिमेंट

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

<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट

लागू नहीं

अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की name एट्रिब्यूट की वैल्यू यह होगी इस्तेमाल किया गया.

मौजूदगी वैकल्पिक
टाइप स्ट्रिंग

&lt;Source&gt; एलिमेंट

(ज़रूरी नहीं) पार्स किए जाने वाले वैरिएबल के बारे में बताता है. मान <Source> की डिफ़ॉल्ट वैल्यू message है. message वैल्यू कॉन्टेक्स्ट के हिसाब से सही है. अनुरोध की प्रोसेस में, message अनुरोध वाले मैसेज का जवाब देता है. तय सीमा में रिस्पॉन्स फ़्लो में, message रिस्पॉन्स मैसेज तक पहुंचाता है.

वैसे तो आप किसी अनुरोध या जवाब वाले मैसेज से जानकारी निकालने के लिए अक्सर इस नीति का इस्तेमाल करते हैं, लेकिन आप इसका इस्तेमाल करके, किसी भी वैरिएबल से जानकारी ली जा सकती है. उदाहरण के लिए, इसे एक्सट्रैक्ट करने के लिए इस्तेमाल किया जा सकता है AccessEntity नीति के तहत बनाई गई इकाई की जानकारी (डेटा से ली गई जानकारी) सेवा के ज़रिए लौटाया गया कॉलआउट नीति का इस्तेमाल करें या किसी एक्सएमएल या JSON ऑब्जेक्ट से जानकारी निकालें.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है अगर <Source> ठीक नहीं किया जा सकता या उसके लिए ऐसे मैसेज का इस्तेमाल किया जाता है जो मैसेज नहीं है, नीति लागू नहीं हो पाएगी.

<Source clearPayload="true|false">request</Source>
डिफ़ॉल्ट: मैसेज
मौजूदगी: वैकल्पिक
टाइप: स्ट्रिंग

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
clearPayload

अगर आपको इसमें बताए गए पेलोड को हटाना है, तो true पर सेट करें &lt;Source&gt; उससे डेटा एक्सट्रैक्ट करने के बाद.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है <clearPayload> विकल्प का इस्तेमाल सिर्फ़ तब करें, जब सोर्स मैसेज ऐसा न हो ExtractVariables के इस्तेमाल करने के बाद ज़रूरी है. true पर सेट करने से मुफ़्त आ जाता है मैसेज में इस्तेमाल की गई मेमोरी बढ़ाएं.

गलत

वैकल्पिक बूलियन

&lt;VariablePrefix&gt; एलिमेंट

(ज़रूरी नहीं) वैरिएबल का पूरा नाम इस तरह बनाया जाता है: <VariablePrefix>, एक बिंदु, और वह नाम जिसे आपने {curly braces} में <Pattern> एलिमेंट या &lt;Variable&gt; एलिमेंट. जैसे: myprefix.id, myprefix.dbncode या myprefix.oauthtoken.

<VariablePrefix>myprefix</VariablePrefix>

उदाहरण के लिए, मान लें कि नाम की वैल्यू "उपयोगकर्ता" है.

  • अगर <VariablePrefix> तय नहीं किया गया है, तो निकाले गए मान user नाम वाले वैरिएबल को असाइन किया गया है.
  • यदि <VariablePrefix> को myprefix के रूप में दिखाया गया है, तो एक्सट्रैक्ट किए गए वैल्यू, myprefix.user नाम के वैरिएबल को असाइन की जाती हैं.
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: वैकल्पिक
टाइप: स्ट्रिंग

&lt;IgnoreUnresolvedVariables&gt; एलिमेंट

(ज़रूरी नहीं) किसी भी ऐसे वैरिएबल को खाली स्ट्रिंग के तौर पर ट्रीट करने के लिए true पर सेट करें जिसे रिज़ॉल्व नहीं किया जा सकता (शून्य). अगर आपको यह सेट करना है कि किसी रेफ़रंस में बताए गए समय पर, नीति के तहत गड़बड़ी दिखे, तो उसे false पर सेट करें वैरिएबल को ठीक नहीं किया जा सकता.

<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
डिफ़ॉल्ट: गलत
मौजूदगी: वैकल्पिक
टाइप: बूलियन

अगर <XMLPayload> में कोई OAuth रेफ़रंस ठीक नहीं किया गया है, तो नीति यह गड़बड़ी दिख रही है:

{
   "fault":{
      "faultstring":"Unresolved xpath path in policy policy_name.",
      "detail":{
         "errorcode":"steps.extractvariables.InvalidXPath"
      }
   }
}

&lt;URIPath&gt; एलिमेंट

(ज़रूरी नहीं है. ज़्यादा जानकारी के लिए, नीचे दी गई टेबल में 'मौजूदगी' लाइन देखें.) कोई वैल्यू एक्सट्रैक्ट करता है अनुरोध स्रोत मैसेज की प्रॉक्सी.pathsuffix से निकालें. पाथ इस पर लागू किया गया पैटर्न प्रॉक्सी है.pathsuffix, जिसमें एपीआई प्रॉक्सी का बेसपाथ शामिल नहीं है. अगर आपने सोर्स मैसेज में जवाब देने वाला मैसेज टाइप हो जाता है, फिर यह एलिमेंट कुछ नहीं करता.

<URIPath>
   <Pattern ignoreCase="false">/accounts/{id}</Pattern>
</URIPath>

एक से ज़्यादा &lt;Pattern&gt; एलिमेंट इस्तेमाल किए जा सकते हैं:

<URIPath>
   <Pattern ignoreCase="false">/accounts/{id}</Pattern>
   <Pattern ignoreCase="false">/accounts/{id}/transactions/{index}</Pattern>
</URIPath>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी नहीं. हालांकि, आपको इनमें से कम से कम एक को शामिल करना होगा: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> या <XMLPayload>.
टाइप: लागू नहीं

विशेषताएं

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

गलत

वैकल्पिक बूलियन

&lt;QueryParam&gt; एलिमेंट

(ज़रूरी नहीं है. ज़्यादा जानकारी के लिए, नीचे दी गई टेबल में 'मौजूदगी' लाइन देखें.) कोई वैल्यू एक्सट्रैक्ट करता है अनुरोध सोर्स मैसेज के चुने गए क्वेरी पैरामीटर से अगर सोर्स मैसेज में रिस्पॉन्स शामिल होता है. इसके बाद, यह एलिमेंट इस तरह का काम करता है: कुछ नहीं.

<QueryParam name="code">
   <Pattern ignoreCase="true">DBN{dbncode}</Pattern>
</QueryParam>

अगर कई क्वेरी पैरामीटर के नाम एक जैसे हैं, तो पैरामीटर के बारे में बताने के लिए इंडेक्स का इस्तेमाल करें:

<QueryParam name="w.2">
   <Pattern ignoreCase="true">{secondW}</Pattern>
</QueryParam>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी नहीं. हालांकि, आपको इनमें से कम से कम एक को शामिल करना होगा: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> या <XMLPayload>.
टाइप: लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
नाम क्वेरी पैरामीटर का नाम बताता है. अगर कई क्वेरी पैरामीटर में समान नाम, इंडेक्स किए गए संदर्भ का इस्तेमाल करें, जहां क्वेरी पैरामीटर का पहला इंस्टेंस इसमें कोई इंडेक्स नहीं है, दूसरा इंडेक्स 2 पर, तीसरा इंडेक्स 3 पर वगैरह.

लागू नहीं

ज़रूरी है स्ट्रिंग

&lt;Header&gt; एलिमेंट

(ज़रूरी नहीं है. ज़्यादा जानकारी के लिए, नीचे दी गई टेबल में 'मौजूदगी' लाइन देखें.) कोई वैल्यू एक्सट्रैक्ट करता है तय किए गए अनुरोध या जवाब मैसेज के बताए गए एचटीटीपी हेडर से. अगर एक से ज़्यादा हेडर में एक जैसा नाम देते हैं, तो उनकी वैल्यू एक कलेक्शन में स्टोर रहती हैं.

<!-- The name is the actual header name. -->
<Header name="Authorization">
<!-- Provide a name for your new custom variable here. -->
   <Pattern ignoreCase="false">Bearer {oauthtoken}</Pattern>
</Header>

अगर कई हेडर के नाम एक जैसे हैं, तो अलग-अलग हेडर का रेफ़रंस देने के लिए इंडेक्स का इस्तेमाल करें कलेक्शन:

<Header name="myHeader.2">
   <Pattern ignoreCase="true">{secondHeader}</Pattern>
</Header>

या अरे में सभी हेडर लिस्ट करने के लिए नीचे दिया गया तरीका अपनाएं:

<Header name="myHeader.values">
   <Pattern ignoreCase="true">{myHeaders}</Pattern>
</Header>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी नहीं. हालांकि, आपको इनमें से कम से कम एक को शामिल करना होगा: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> या <XMLPayload>.
टाइप: लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
नाम उस हेडर का नाम बताता है जिससे वैल्यू एक्सट्रैक्ट की जाती है. अगर एक से ज़्यादा हेडर का नाम समान हो, तो इंडेक्स किए गए रेफ़रंस का इस्तेमाल करें, जहां हेडर का पहला इंस्टेंस हेडर में कोई इंडेक्स नहीं है, दूसरा इंडेक्स 2 पर, तीसरा इंडेक्स 3 पर, वगैरह. इस्तेमाल करें कलेक्शन में सभी हेडर पाने के लिए .values.

लागू नहीं

ज़रूरी है स्ट्रिंग

&lt;FormParam&gt; एलिमेंट

(ज़रूरी नहीं है. ज़्यादा जानकारी के लिए, नीचे दी गई टेबल में 'मौजूदगी' लाइन देखें.) कोई वैल्यू एक्सट्रैक्ट करता है बताए गए अनुरोध या जवाब मैसेज के बताए गए फ़ॉर्म पैरामीटर से. फ़ॉर्म पैरामीटर सिर्फ़ तब निकाला जा सकता है, जब तय किए गए मैसेज का Content-Type हेडर application/x-www-form-urlencoded.

<FormParam name="greeting">
    <Pattern>hello {user}</Pattern>
</FormParam>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी नहीं. हालांकि, आपको इनमें से कम से कम एक को शामिल करना होगा: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> या <XMLPayload>.
टाइप: लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
नाम उस फ़ॉर्म पैरामीटर का नाम जिससे वैल्यू एक्सट्रैक्ट की जाती है.

लागू नहीं

ज़रूरी है स्ट्रिंग

&lt;Variable&gt; एलिमेंट

(ज़रूरी नहीं है. ज़्यादा जानकारी के लिए, नीचे दी गई टेबल में 'मौजूदगी' लाइन देखें.) यह बताता है कि उस वैरिएबल का नाम जिससे वैल्यू एक्सट्रैक्ट करनी है.

<Variable name="myVar">
    <Pattern>hello {user}</Pattern>
</Variable>

वैरिएबल से दो वैल्यू एक्सट्रैक्ट करने के लिए:

<Variable name="myVar">
   <Pattern>hello {firstName} {lastName}</Pattern>
</Variable>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी नहीं. हालांकि, आपको इनमें से कम से कम एक को शामिल करना होगा: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> या <XMLPayload>.
टाइप: लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
नाम उस वैरिएबल का नाम जिससे वैल्यू एक्सट्रैक्ट करनी है.

लागू नहीं

ज़रूरी है स्ट्रिंग

&lt;JSONPayload&gt; एलिमेंट

(ज़रूरी नहीं है. ज़्यादा जानकारी के लिए, नीचे दी गई टेबल में 'मौजूदगी' लाइन देखें.) यह बताता है कि JSON के फ़ॉर्मैट वाला मैसेज, जिससे वैरिएबल की वैल्यू निकाली जाएगी. JSON एक्सट्रैक्शन सिर्फ़ तब किया जाता है, जब मैसेज का Content-Type हेडर Content-Type हो.

<JSONPayload>
   <Variable name="name" type="string">
      <JSONPath>{example}</JSONPath>
   </Variable>
</JSONPayload>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी नहीं. हालांकि, आपको इनमें से कम से कम एक को शामिल करना होगा: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> या <XMLPayload>.
टाइप: लागू नहीं

&lt;JSONPayload&gt;/&lt;Variable&gt; एलिमेंट

(JSONPayload एलिमेंट में ज़रूरी है.) उस वैरिएबल के बारे में बताता है जहां एक्सट्रैक्ट की गई वैल्यू असाइन किया गया है. जानकारी अपने-आप भरने के लिए, &lt;Variable&gt; एलिमेंट में कई &lt;Variable&gt; टैग शामिल किए जा सकते हैं सेट करें.

<Variable name="name" type="string">
   <JSONPath>{example}</JSONPath>
</Variable>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: JSONPayload एलिमेंट में ज़रूरी है.
टाइप: लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
नाम

उस वैरिएबल का नाम तय करता है जिस पर एक्सट्रैक्ट किया गया मान मिलेगा असाइन किया गया है.

नाम

ज़रूरी है स्ट्रिंग
टाइप इससे वैरिएबल वैल्यू के डेटा टाइप की जानकारी मिलती है. लागू नहीं वैकल्पिक

स्ट्रिंग. इनमें से चुनें:

  • स्ट्रिंग
  • बूलियन
  • पूर्णांक
  • लंबा
  • फ़्लोट
  • दोगुनी
  • नोडसेट (JSON फ़्रैगमेंट दिखाता है)

&lt;JSONPayload&gt;/&lt;Variable&gt;/&lt;JSONPath&gt; एलिमेंट

(JSONPayload:Variable एलिमेंट में ज़रूरी है.) एक्सट्रैक्ट करने के लिए इस्तेमाल किया जाने वाला JSON पाथ बताता है JSON के फ़ॉर्मैट वाले मैसेज से ली गई वैल्यू.

<Variable name="name">
   <JSONPath>$.rss.channel.title</JSONPath>
</Variable>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी है
टाइप: स्ट्रिंग

&lt;XMLPayload&gt; एलिमेंट

(ज़रूरी नहीं है. ज़्यादा जानकारी के लिए, नीचे दी गई टेबल में 'मौजूदगी' लाइन देखें.) यह बताता है कि एक्सएमएल फ़ॉर्मैट वाला मैसेज, जिससे वैरिएबल की वैल्यू निकाली जाएगी. एक्सएमएल पेलोड सिर्फ़ तब एक्सट्रैक्ट किए जाते हैं, जब मैसेज का Content-Type हेडर होता है है text/xml, application/xml, या application/*+xml.

<XMLPayload stopPayloadProcessing="false">
  <Namespaces>
     <Namespace prefix="apigee">http://www.apigee.com</Namespace>
     <Namespace prefix="gmail">http://mail.google.com</Namespace>
  </Namespaces>
  <Variable name="name" type="boolean">
     <XPath>/apigee:test/apigee:example</XPath>
  </Variable>
</XMLPayload>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी नहीं. हालांकि, आपको इनमें से कम से कम एक को शामिल करना होगा: <URIPath>, <QueryParam>, <Header>, <FormParam>, <JSONPayload> या <XMLPayload>.
टाइप: लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
stopPayloadProcessing

एक वैरिएबल के अपने-आप भरने के बाद, OAuth के आकलन को रोकने के लिए, true पर सेट करें. इसका मतलब है कि नीति में सिर्फ़ एक वैरिएबल अपने-आप भरता है.

गलत

वैकल्पिक बूलियन

&lt;XMLPayload&gt;/&lt;Namespaces&gt; एलिमेंट

(ज़रूरी नहीं) यह नेमस्पेस के बारे में बताता है, जिसका इस्तेमाल एक्स पाथ की जांच करने के लिए किया जाना है. अगर इसका इस्तेमाल किया जा रहा है, तो तो आपको यहां नेमस्पेस के बारे में बताना होगा, जैसा कि नीचे दिया गया उदाहरण देखें.

<XMLPayload stopPayloadProcessing="false">
  <Namespaces>
     <Namespace prefix="apigee">http://www.apigee.com</Namespace>
     <Namespace prefix="gmail">http://mail.google.com</Namespace>
  </Namespaces>
  <Variable name="legName" type="string">
    <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
  </Variable>
</XMLPayload>

अगर आप अपने+एक्सप्रेशन में नेमस्पेस का इस्तेमाल नहीं कर रहे हैं, तो आप <Namespaces> एलिमेंट, जैसा कि नीचे दिए गए उदाहरण में बताया गया है:

<XMLPayload stopPayloadProcessing="false">
  <!-- <Namespaces/> -->
  <Variable name="legName" type="string">
    <XPath>/Directions/route/leg/name</XPath>
  </Variable>
</XMLPayload>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: वैकल्पिक
टाइप: स्ट्रिंग

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
prefix

नेमस्पेस प्रीफ़िक्स.

लागू नहीं

ज़रूरी है स्ट्रिंग

&lt;XMLPayload&gt;/&lt;Variable&gt; एलिमेंट

(ज़रूरी नहीं) इससे यह वैरिएबल तय होता है कि एक्सट्रैक्ट की गई वैल्यू किस वैरिएबल को असाइन की जाएगी.

<Variable name="name" type="boolean">
   <XPath>/test/example</XPath>
</Variable>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: वैकल्पिक
टाइप: लागू नहीं

विशेषताएं

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी टाइप
नाम

उस वैरिएबल का नाम तय करता है जिस पर एक्सट्रैक्ट किया गया मान मिलेगा असाइन किया गया है.

नाम

ज़रूरी है स्ट्रिंग
टाइप इससे वैरिएबल वैल्यू के डेटा टाइप की जानकारी मिलती है. बूलियन वैकल्पिक

स्ट्रिंग. इनमें से चुनें:

  • स्ट्रिंग
  • बूलियन
  • पूर्णांक
  • लंबा
  • फ़्लोट
  • दोगुनी
  • नोडसेट (एक्सएमएल फ़्रैगमेंट दिखाता है)

&lt;XMLPayload&gt;/&lt;Variable&gt;/&lt;XPath&gt; एलिमेंट

(XMLPayload:Variable एलिमेंट के अंदर ज़रूरी है.) यह नीति वैरिएबल. सिर्फ़ OAuth 1.0 एक्सप्रेशन काम करते हैं.

<Variable name="name" type="boolean">
   <XPath>/test/example</XPath>
</Variable>

नेमस्पेस के साथ उदाहरण. अगर आप अपनेएक्स पाथ एक्सप्रेशन में नेमस्पेस का इस्तेमाल करते हैं, तो आपको एलान करना होगा <XMLPayload><Namespaces> सेक्शन में नेमस्पेस नीति के बारे में ज़्यादा जानें.

<Variable name="name" type="boolean">
   <XPath>/foo:test/foo:example</XPath>
</Variable>
डिफ़ॉल्ट: लागू नहीं
मौजूदगी: ज़रूरी है
टाइप: स्ट्रिंग

गड़बड़ी का रेफ़रंस

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 Fix
steps.extractvariables.ExecutionFailed 500

This error occurs when:

  • The input payload (JSON, XML) is empty.
  • The input (JSON, XML, etc) passed to the policy is invalid or malformed.
steps.extractvariables.ImmutableVariable 500 A variable used in the policy is immutable. The policy was unable to set this variable.
steps.extractvariables.InvalidJSONPath 500 This error occurs if an invalid JSON path is used in the JSONPath element of the policy. For example, if a JSON payload does not have the object Name, but you specify Name as the path in the policy, then this error occurs.
steps.extractvariables.JsonPathParsingFailure 500 This error occurs when the policy is unable to parse a JSON path and extract data from the flow variable specified in Source element. Typically this happens if the flow variable specified in the Source element does not exist in the current flow.
steps.extractvariables.SetVariableFailed 500 This error occurs if the policy could not set the value to a variable. The error generally happens if you try to assign values to multiple variables whose names start with the same words in a nested dot-separated format.
steps.extractvariables.SourceMessageNotAvailable 500 This error occurs if the message variable specified in the Source element of the policy is either:
  • Out of scope (not available in the specific flow where the policy is being executed) or
  • Can't be resolved (is not defined)
steps.extractvariables.UnableToCast 500 This error occurs if the policy was unable to cast the extracted value to a variable. Typically this happens if you attempt to set the value of one data type to a variable of another data type.

Deployment errors

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

Error name Cause Fix
NothingToExtract If the policy does not have any of the elements URIPath, QueryParam, Header, FormParam, XMLPayload, or JSONPayload, the deployment of the API Proxy fails, because there's nothing to extract.
NONEmptyPrefixMappedToEmptyURI This error occurs if the policy has a prefix defined in the Namespace element under the XMLPayload element, but no URI is defined.
DuplicatePrefix This error occurs if the policy has the same prefix defined more than once in the Namespace element under the XMLPayload element.
NoXPathsToEvaluate If the policy does not have the XPath element within the XMLPayload element, then the deployment of the API proxy fails with this error.
EmptyXPathExpression If the policy has an empty XPath expression within the XMLPayload element, then the deployment of the API proxy fails.
NoJSONPathsToEvaluate If the policy does not have the JSONPath element within the JSONPayload element, then the deployment of the API proxy fails with this error.
EmptyJSONPathExpression If the policy has an empty XPath expression within the XMLPayload element, then the deployment of the API proxy fails.
MissingName If the policy does not have the name attribute in any of the policy elements like QueryParam, Header, FormParam or Variable, where it is required, then the deployment of the API proxy fails.
PatternWithoutVariable If the policy does not have a variable specified within the Pattern element, then the deployment of the API proxy fails. The Pattern element requires the name of the variable in which extracted data will be stored.
CannotBeConvertedToNodeset If the policy has an XPath expression where the Variable type is defined as nodeset, but the expression cannot be converted to nodeset, then the deployment of the API proxy fails.
JSONPathCompilationFailed The policy could not compile a specified JSON Path.
InstantiationFailed The policy could not be instantiated.
XPathCompilationFailed If the prefix or the value used in the XPath element is not part of any of the declared namespaces in the policy, then the deployment of the API proxy fails.
InvalidPattern If the Pattern element definition is invalid in any of the elements like URIPath, QueryParam, Header, FormParam, XMLPayload or JSONPayload within the policy, then the deployment of the API proxy fails.

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 = "SourceMessageNotAvailable"
extractvariables.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. extractvariables.EV-ParseJsonResponse.failed = true

Example error response

{
   "fault":{
      "detail":{
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse"
   }
}

Example fault rule

<FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name = "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition>
</FaultRule>

स्कीमा

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

विश्लेषण API मैसेज में, अपने हिसाब से आंकड़े शेयर करने की सुविधा का इस्तेमाल करना

वैरिएबल रेफ़रंस