KeyValueMapOperations नीति

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

Edge यूज़र इंटरफ़ेस (यूआई) से लिया गया पासकोड वैल्यू मैप ऑपरेशंस आइकॉन

क्या

यह नीति के हिसाब से, Apigee Edge में उपलब्ध, की वैल्यू मैप (केवीएम) स्टोर का ऐक्सेस देता है. कॉन्फ़िगर करके, नाम वाले मौजूदा मैप में से की/वैल्यू पेयर को सेव, वापस पाया, और मिटाया जा सकता है KeyValueMapOperations नीतियां, जो PUT, GET या DELETE कार्रवाइयों के बारे में बताती हैं. (इनमें से कम से कम एक ये कार्रवाइयां नीति के तहत की जानी चाहिए.)

वीडियो

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

वीडियो ब्यौरा
कुंजी की वैल्यू क्यों Maps? जानें कि आपको केवीएम की ज़रूरत क्यों है और वे कैसे काम करती हैं.
इनका इस्तेमाल करके केवीएम बनाएं रनटाइम के दौरान यूज़र इंटरफ़ेस (यूआई) और केवीएम को वापस पाना केवीएम बनाएं, केवीएम नीति का इस्तेमाल करके इसकी वैल्यू पाएं, और एपीआई में वैल्यू इंजेक्ट करें फ़्लो वैरिएबल का इस्तेमाल करके अनुरोध किया जा सकता है.
बनाएं और अपडेट करें एपीआई रनटाइम पर केवीएम का इस्तेमाल KVM नीति का इस्तेमाल करके, एपीआई रनटाइम पर KVM बनाएं.
KVM को इसके लिए कैश करें परफ़ॉर्मेंस को बेहतर बनाना डेटा को कैश मेमोरी में सेव करके, केवीएम नीति की परफ़ॉर्मेंस को बेहतर बनाएं.
स्टोर एन्क्रिप्ट (सुरक्षित) किया गया KVM KVM में संवेदनशील जानकारी को एन्क्रिप्ट (सुरक्षित) किए गए फ़ॉर्मैट में सेव करें और वैल्यू को करने के लिए डिज़ाइन किया गया है.
ऐक्सेस मैनेज करें केवीएम के स्कोप का इस्तेमाल करके केवीएम का इस्तेमाल करके, केवीएम को संगठन, एनवायरमेंट, एपीआई प्रॉक्सी या एपीआई प्रॉक्सी रीविज़न तक सीमित करें नीति के दायरे वाला एट्रिब्यूट.
केवीएम मिटाएं एपीआई रनटाइम में एंट्री KVM नीति DELETE कार्रवाई का इस्तेमाल करके, एपीआई रनटाइम पर KVM एंट्री मिटाएं.

सैंपल

लिटरल वैल्यू के साथ KVM को रखें

इस नीति के चलने पर, यह नाम का एन्क्रिप्ट किया गया KVM बनाती है FooKVM, इसके बाद FooKey_1 नाम की एक कुंजी बनाता है लिटरल स्ट्रिंग foo और bar के साथ दो मान सेट किए गए हैं (वैरिएबल से निकाले गए वैल्यू के साथ सेट नहीं है). आसानी से अपने कैलेंडर में जोड़ें. अगले उदाहरण में दी गई कुंजी GET है. इसका इस्तेमाल इंडेक्स नंबर तय करने के लिए किया जाएगा का उपयोग करें.

<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="FooKVM" mapIdentifier="FooKVM">
  <DisplayName>FooKVM</DisplayName>
  <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
  <Scope>environment</Scope>
  <Put>
    <Key>
      <Parameter>FooKey_1</Parameter>
    </Key>
    <Value>foo</Value>
    <Value>bar</Value>
  </Put>
</KeyValueMapOperations>

ध्यान दें कि स्कोप "एनवायरमेंट" का है. इसका मतलब है कि मैनेजमेंट पेज में केवीएम को देखा जा सकता है एपीआई > के नीचे यूज़र इंटरफ़ेस (यूआई) एनवायरमेंट का कॉन्फ़िगरेशन > मुख्य वैल्यू वाले मैप. केवीएम उस पेज पर दिखाए गए सभी विज्ञापन, चुने गए एनवायरमेंट के दायरे में आते हैं.

लिटरल वैल्यू से केवीएम पाएं

यह नीति पिछले उदाहरण से FooKVM मैप की जांच करती है, जिससे FooKey_1 कुंजी से दूसरी वैल्यू (index="2") और इसे किसी वैरिएबल में सेव करती है foo_variable नाम का इस्तेमाल किया गया.

<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
  <DisplayName>GetKVM</DisplayName>
  <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
  <Scope>environment</Scope>
  <Get assignTo="foo_variable" index="2">
    <Key>
      <Parameter>FooKey_1</Parameter>
    </Key>
  </Get>
</KeyValueMapOperations>

वैरिएबल के साथ केवीएम डालें

यूआरएल को छोटा करने वाली सेवा, की-वैल्यू मैप का एक आसान उदाहरण है. की-वैल्यू मैप छोटे किए गए यूआरएल और उनसे जुड़े पूरे यूआरएल को सेव करने के लिए कॉन्फ़िगर किया जा सकता है.

नीति का यह सैंपल, 'की वैल्यू मैप' बनाता है. यह नीति दो जुड़ी वैल्यू वाली एक कुंजी जोड़ती है कुंजी/वैल्यू वाले मैप में डालें, जिसका नाम "urlMapper" है.

<KeyValueMapOperations name="putUrl" mapIdentifier="urlMapper">
   <Scope>apiproxy</Scope>
   <Put override="true">
      <Key>
         <Parameter ref="urlencoding.requesturl.hashed"/>
      </Key>
      <Value ref="urlencoding.longurl.encoded"/>
      <Value ref="request.queryparam.url"/>
   </Put>
</KeyValueMapOperations>

इस उदाहरण में दी गई कुंजी, urlencoding.requesturl.hashed कस्टम वैरिएबल. हैश किया गया अनुरोध URL, कोड (JavaScript या Java, उदाहरण) और फिर इस वैरिएबल में सेव किया जाता है, जहां KeyValueMapOperations नीति ऐक्सेस कर सकती है इसे.

हर requesturl.hashed के लिए, दो वैल्यू सेव की जाती हैं:

  • urlencoding.longurl.encoded नाम के कस्टम वैरिएबल का कॉन्टेंट
  • पहले से तय वैरिएबल request.queryparam.url का कॉन्टेंट

उदाहरण के लिए, जब रनटाइम में नीति लागू होती है, तो वैरिएबल की वैल्यू इस तरह हो सकती हैं: अनुसरण करता है:

  • urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
  • urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
  • request.queryparam.url: http://apigee.com

नीचे दिए गए पासकोड/वैल्यू वाला मैप और एंट्री Edge के की/वैल्यू स्टोर में जनरेट होगी और का दायरा उस एपीआई प्रॉक्सी तक सीमित होता है जिससे नीति अटैच की गई है:

{
    "entry" :[
        {
            "name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be",
            "value" : "http://tinyurl.com/38lwmlr,http://apigee.com"
        }
    ],
    "name" : "urlMapper"
}

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

किसी वैरिएबल से केवीएम पाएं

यूआरएल का 'छोटा करना', एक उपयोगी की-वैल्यू मैप का एक आसान उदाहरण है सेवा. की-वैल्यू मैप छोटे किए गए यूआरएल और उनसे जुड़े पूरे यूआरएल को सेव करने के लिए कॉन्फ़िगर किया जा सकता है.

कुंजी/वैल्यू वाली मैप एंट्री की वैल्यू फिर से पाने के लिए, जैसे कि KeyValueMapOperations PUT टैब के साथ, कुंजी मान वाला मैप पाने के लिए कोई नीति कॉन्फ़िगर करें:

<KeyValueMapOperations name="getUrl" mapIdentifier="urlMapper">
   <Scope>apiproxy</Scope>
   <Get assignTo="urlencoding.shorturl" index='1'>
      <Key>
         <Parameter ref="urlencoding.requesturl.hashed"/>
      </Key>
   </Get>
</KeyValueMapOperations>

इस नीति के लागू होने पर, यदि urlencoding.requesturl.hashed वैरिएबल है ed24e12820f2f900ae383b7cc4f2b31c402db1be और फिर कस्टम वैरिएबल का नाम urlencoding.shorturl को इस वैल्यू पर सेट किया जाएगा http://tinyurl.com/38lwmlr.

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

केवीएम से एन्क्रिप्ट (सुरक्षित) की गई वैल्यू पाएं

अगर मुख्य वैल्यू वाला मैप एन्क्रिप्ट (सुरक्षित) किया गया है, तो "private." का इस्तेमाल करके वैल्यू वापस पाएं उपसर्ग के साथ assignTo विशेषता मान का उपयोग करें. इस उदाहरण में, वैरिएबल private.encryptedVar में की-वैल्यू मैप की डिक्रिप्ट की गई वैल्यू होती है foo बटन. एन्क्रिप्ट (सुरक्षित) किए गए की-वैल्यू वाले मैप बनाने के बारे में जानने के लिए, "बनाएं" मुख्य/वैल्यू वाले मैप के विषय management API.

<KeyValueMapOperations name="getEncrypted" mapIdentifier="encrypted_map">
   <Scope>apiproxy</Scope>
   <Get assignTo="private.encryptedVar" index='1'>
      <Key>
         <Parameter>foo</Parameter>
      </Key>
   </Get>
</KeyValueMapOperations>

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


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

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

<KeyValueMapOperations async="false" continueOnError="false"
    enabled="true" name="Key-Value-Map-Operations-1"
    mapIdentifier="urlMapper" >
   <DisplayName>Key Value Map Operations 1</DisplayName>
   <Scope>environment</Scope>
   <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
   <InitialEntries>
      <Entry>
         <Key>
            <Parameter>key_name_literal</Parameter>
         </Key>
         <Value>value_literal</Value>
      </Entry>
      <Entry>
         <Key>
            <Parameter>variable_name</Parameter>
         </Key>
         <Value>value_1_literal</Value>
         <Value>value_2_literal</Value>
      </Entry>
   </InitialEntries>
   <Put override="false">
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
      <Value ref="variable_name"/>
   </Put>
   <Get assignTo="myvar" index="1">
      <Key>
         <Parameter ref="variable_name"/>
      </Key>
   </Get>
   <Delete>
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
   </Delete>
</KeyValueMapOperations>

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

नीचे दिए गए उदाहरण में, <KeyValueMapOperations> टैग पर एट्रिब्यूट दिखाए गए हैं:

<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">

नीचे दी गई टेबल में, खास तौर पर <KeyValueMapOperations> टैग के एट्रिब्यूट के बारे में बताया गया है:

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

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

सार्वजनिक क्लाउड के लिए Apigee Edge के साथ, केवीएम का नाम केस-सेंसिटिव होता है. उदाहरण के लिए, foobar, FooBar से अलग है.

इस एट्रिब्यूट को बाहर रखने पर, kvmap नाम के KVM का इस्तेमाल किया जाता है.

संगठन/एनवायरमेंट/apiप्रॉक्सी के दायरे में आने पर, आपके पास अपने मैप का नाम बताने के लिए, mapIdentifier एट्रिब्यूट का इस्तेमाल करें.

लागू नहीं वैकल्पिक

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

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

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

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

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

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

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

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

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

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

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

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

गलत बहिष्कृत

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

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

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

लागू नहीं

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

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

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

तय किए गए की/वैल्यू पेयर को मिटाता है. <Get> में से कम से कम एक, <Put> या <Delete> का इस्तेमाल करना ज़रूरी है.

mapIdentifier एट्रिब्यूट के साथ केवीएम का नाम ज़रूर बताएं पैरंट एलिमेंट के लिए. उदाहरण के लिए:

<Delete>
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Delete>
डिफ़ॉल्ट लागू नहीं
मौजूदगी <Get> या <Put> मौजूद न होने पर ज़रूरी है.
टाइप लागू नहीं

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

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

Edge for Public Cloud के लिए, कुंजी का साइज़ 2 केबी से ज़्यादा नहीं होना चाहिए. उदाहरण के लिए:

<InitialEntries>
   <Entry>
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
      <Value>v1</Value>
   </Entry>
   <Entry>
      <Key>
         <Parameter>key_name_variable</Parameter>
      </Key>
      <Value>v3</Value>
      <Value>v4</Value>
   </Entry>
</InitialEntries>
डिफ़ॉल्ट लागू नहीं
मौजूदगी वैकल्पिक
टाइप लागू नहीं

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

समर्थन नहीं होना या रुकना. इसके बजाय, <Scope> एलिमेंट का इस्तेमाल करें.

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

यह नीति सेकंड में अवधि तय करती है. इसके बाद Edge, कैश मेमोरी में सेव की गई वैल्यू को दर्ज किया गया KVM.

0 या -1 की वैल्यू या इस एलिमेंट को शामिल न करने का मतलब है कि 300 सेकंड की डिफ़ॉल्ट वैल्यू यह है इस्तेमाल किया गया. उदाहरण के लिए:

<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
डिफ़ॉल्ट 300 (5 मिनट)
मौजूदगी वैकल्पिक
टाइप पूर्णांक

KVM, लंबे समय तक चलने वाला एक स्थायी तरीका है. यह NoSQL डेटाबेस में कुंजियों और वैल्यू को सेव करता है. इस वजह से, रनटाइम के दौरान केवीएम से पढ़ने से प्रॉक्सी परफ़ॉर्मेंस धीमा हो सकती है. बेहतर बनाने के लिए की मदद से काम करता है, तो एज में रनटाइम के दौरान केवीएम कुंजियों/वैल्यू को मेमोरी में कैश करने के लिए, ऐज़ पहले से मौजूद होता है. केवीएम से जुड़ी कार्रवाइयों की नीति, जीईटी ऑपरेशन के लिए हमेशा कैश मेमोरी से डेटा लेती है.

<ExpiryTimeInSecs> एलिमेंट की मदद से, यह कंट्रोल किया जा सकता है कि बटन या वैल्यू कितनी देर तक चालू रखें केवीएम से फिर से रीफ़्रेश करने से पहले, नीति में इस्तेमाल किए गए डेटा को कैश मेमोरी में सेव किया जाता है. हालांकि, GET और PUT जैसी कार्रवाइयां, कैश मेमोरी की समयसीमा पर कैसे असर डालती हैं, इसके बीच कुछ अंतर हैं.

GET - जब पहली बार KVM GET ऑपरेशन लागू होता है, तो अनुरोध किया गया केवीएम की कुंजियां/वैल्यू (जिसका नाम नीति के रूट mapIdentifier में दिया गया हो एट्रिब्यूट) कैश मेमोरी में लोड कर दी जाती हैं, जहां वे बाद के जीईटी ऑपरेशन के लिए तब तक बनी रहती हैं, जब तक इनमें से कोई एक ये चीज़ें होती हैं:

  • <ExpiryTimeInSecs> में तय किए गए सेकंड की समयसीमा खत्म हो जाती है.
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है या
  • केवीएम नीति में PUT कार्रवाई, मौजूदा वैल्यू को बदल देती है (इसके बारे में आगे बताया गया है).

PUT - PUT ऑपरेशन तय किए गए केवीएम के लिए कुंजियां/वैल्यू लिखता है. अगर PUT एक ऐसी कुंजी पर लिखता है जो पहले से कैश में मौजूद है, वह कैश तुरंत रीफ़्रेश हो जाती है और अब रुक जाती है नीति की <ExpiryTimeInSecs> एलिमेंट.

उदाहरण - केवीएम को कैश मेमोरी में सेव करना

  1. जीईटी ऑपरेशन "रेटिंग" का मान फिर से हासिल करता है जो "10" वैल्यू जोड़ता है पर जाकर उसे कैश मेमोरी में सेव करें. कॉन्टेंट बनाने नीति के लिए, <ExpiryTimeInSecs> की वैल्यू 60 है.
  2. 30 सेकंड बाद, जीईटी नीति फिर से लागू होती है और "10" को वापस लाती है को कैश मेमोरी में सेव करता है.
  3. 5 सेकंड बाद, PUT नीति "रेटिंग" के मान को अपडेट करती है "8" तक, और पीयूटी नीति के लिए, <ExpiryTimeInSecs> है 20. कैश मेमोरी तुरंत सेव की जाती है नई वैल्यू के साथ रीफ़्रेश किया जाएगा. यह वैल्यू अब कैश मेमोरी में 20 सेकंड तक रहने के लिए सेट की गई है. (अगर PUT ऐसा नहीं हुआ था, पहले GET से पॉप्युलेट किया गया कैश अब भी दूसरे के लिए मौजूद रहेगा 30 सेकंड, मूल वीडियो के 60 सेकंड बचे हैं.)
  4. 15 सेकंड बाद, दूसरा जीईटी "8" वैल्यू को एक्ज़ीक्यूट करके फिर से हासिल करता है.

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

बताई गई कुंजी का मान हासिल करता है. <Get> में से कम से कम एक, <Put> या <Delete> का इस्तेमाल करना ज़रूरी है.

पक्का करें कि आपने कन्वर्ज़न ट्रैकिंग में, mapIdentifier एट्रिब्यूट के साथ KVM का नाम पैरंट एलिमेंट.

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

डिफ़ॉल्ट लागू नहीं
मौजूदगी अगर <Put> या <Delete> नहीं है, तो ज़रूरी है उपस्थित.
टाइप लागू नहीं

केवीएम से एक आइटम पाना

<Get assignTo="myvar" index="1">
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Get>

एक केवीएम से कई आइटम पाएं

नीचे दिए गए उदाहरण में, नीचे दी गई कुंजियों और वैल्यू के साथ एक KVM की कल्पना करें. इसके अलावा अब तक की सबसे लोकप्रिय फ़िल्मों की चल रही सूची को सेव करने के लिए, केवीएम स्टोर सभी बड़ी फ़िल्मों के निर्देशक का नाम हो.

सुरक्षा कुंजी मान
top_movies प्रिंसेस ब्राइड,द गॉडफ़ादर,सिटिज़न केन
सिटिज़न केन ओर्सन वेल्स
प्रिंसेस ब्राइड रॉब रीनर
द गॉडफ़ादर फ़्रांसिस फोर्ड कोपोला

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

<Get assignTo="top.movie.pick" index="1">
   <Key>
      <Parameter>top_movies</Parameter>
   </Key>
</Get>
<Get assignTo="movie.director">
   <Key>
      <Parameter ref="top.movie.pick"/>
   </Key>
</Get>

एपीआई प्रॉक्सी को कॉल करने पर, Edge ये चीज़ें बनाता है एपीआई प्रॉक्सी फ़्लो में इस्तेमाल किए जा सकने वाले वैरिएबल:

  • top.movie.pick=Princess Bride
  • movie.director=Rob Reiner

विशेषताएं

नीचे दिए गए टेबल में <Get> एलिमेंट के एट्रिब्यूट के बारे में बताया गया है:

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

वह वैरिएबल जिसे वापस लाई गई वैल्यू असाइन की जानी चाहिए.

अगर कुंजी वैल्यू वाला मैप एन्क्रिप्ट (सुरक्षित) किया गया है, तो assignTo नाम को इससे शुरू करें "private.". जैसे:

<Get assignTo="private.myvar">

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

एन्क्रिप्ट (सुरक्षित) किए गए की-वैल्यू वाले मैप बनाने के बारे में जानने के लिए, "बनाएं" के विषय कुंजी/वैल्यू वाले मैप का मैनेजमेंट API और बनाएं और एनवायरमेंट की वैल्यू मैप में बदलाव करना.

लागू नहीं ज़रूरी है
इंडेक्स

बहु-वैल्यू वाली कुंजी से फ़ेच करने के लिए, आइटम का इंडेक्स नंबर (एक-आधारित इंडेक्स में). उदाहरण के लिए, index=1 तय करने पर, पहली वैल्यू मिलेगी और इसे assignTo वैरिएबल. अगर कोई इंडेक्स मान तय नहीं किया गया है, तो वह एंट्री वैरिएबल को java.util.List के तौर पर असाइन की जाती है.

उदाहरण के लिए, "KVM से एन्क्रिप्ट (सुरक्षित) की गई वैल्यू पाएं" सेक्शन देखें सैंपल में टैब खोलें.

लागू नहीं वैकल्पिक

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

की-वैल्यू मैप के लिए सीड वैल्यू, जो शुरू होने पर, की-वैल्यू मैप में अपने-आप भर जाती हैं. यह पक्का करें कि mapIdentifier एट्रिब्यूट के साथ केवीएम का नाम चालू हो पैरंट एलिमेंट. उदाहरण के लिए:

<InitialEntries>
   <Entry>
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
      <Value>v1</Value>
   </Entry>
   <Entry>
      <Key>
         <Parameter>key_name_variable</Parameter>
      </Key>
      <Value>v3</Value>
      <Value>v4</Value>
   </Entry>
</InitialEntries>

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

इस एलिमेंट से भरी गई कुंजियां और वैल्यू, लिटरल होनी चाहिए. उदाहरण के लिए, <Parameter ref="request.queryparam.key"> इस एलिमेंट में काम नहीं करता.

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

एन्क्रिप्ट (सुरक्षित) किया गया KVM बनाने के लिए, Key/Value Maps management API का इस्तेमाल करें.

डिफ़ॉल्ट लागू नहीं
मौजूदगी वैकल्पिक
टाइप लागू नहीं

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

की/वैल्यू मैप एंट्री में कुंजी के बारे में बताता है. एक कुंजी कंपोज़िट हो सकती है, जिसका मतलब है कि कुंजी बनाने के लिए एक पैरामीटर जोड़ा जा सकता है. उदाहरण के लिए, userID और key बनाने के लिए, role को जोड़ा जा सकता है. उदाहरण के लिए:

<Key>
    <Parameter>key_name_literal</Parameter>
</Key>

पैरामीटर बनाने के तरीके की जानकारी के लिए, &lt;Parameter&gt; एलिमेंट ज़रूर देखें कुंजी का नाम सेट करें.

Edge for Public Cloud के साथ, कुंजी का साइज़ 2 केबी से ज़्यादा नहीं होना चाहिए. ज़्यादा जानकारी के लिए, Public Cloud API और Private Cloud API के लिए Edge के बीच अंतर लेख पढ़ें.

डिफ़ॉल्ट लागू नहीं
मौजूदगी वैकल्पिक
टाइप लागू नहीं

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

की/वैल्यू पेयर में कुंजी के बारे में बताता है. यह एलिमेंट बनाते, रखते समय, कुंजी/वैल्यू पेयर को वापस पाना या मिटाना.

नाम बताने के लिए, इनका इस्तेमाल करें:

  • लिटरल स्ट्रिंग

    <Key>
      <Parameter>literal</Parameter>
    </Key>
  • ref एट्रिब्यूट का इस्तेमाल करके, रन टाइम के दौरान हासिल किया जाने वाला वैरिएबल

    <Key>
      <Parameter ref="variable_name"/>
    </Key>
  • लिटरल और वैरिएबल रेफ़रंस का कॉम्बिनेशन

    <Key>
      <Parameter>targeturl</Parameter>
      <Parameter ref="apiproxy.name"/>
      <Parameter>weight</Parameter>
    </Key>

जब मुख्य एलिमेंट में कई पैरामीटर एलिमेंट शामिल होते हैं, तो मुख्य स्ट्रिंग के तौर पर हर पैरामीटर की वैल्यू को जोड़ने की प्रोसेस, डबल अंडरस्कोर से जुड़ी होती है. उदाहरण के लिए, ऊपर दिए गए उदाहरण में, अगर apiproxy.name वैरिएबल की वैल्यू "abc1" है, तो लागू होने वाली कुंजी targeturl__abc1__weight होगी.

चाहे आप कोई कुंजी/वैल्यू एंट्री पा रहे हों, अपडेट कर रहे हों या मिटा रहे हों, कुंजी का नाम कुंजी का नाम देख सकते हैं. देखें तय करना और दिशा-निर्देशों के लिए, मुख्य नामों को वापस पाना.

डिफ़ॉल्ट लागू नहीं
मौजूदगी ज़रूरी है
टाइप स्ट्रिंग

विशेषताएं

नीचे दिए गए टेबल में <Parameter> एलिमेंट के एट्रिब्यूट के बारे में बताया गया है:

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

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

की/वैल्यू पेयर को की-वैल्यू मैप में लिखता है, चाहे मुख्य वैल्यू मैप एन्क्रिप्ट (सुरक्षित) किया गया हो या एन्क्रिप्ट (सुरक्षित) नहीं किया गया है. अगर कुंजी मान मैप mapIdentifier एट्रिब्यूट में पैरंट एलिमेंट मौजूद नहीं है, तो मैप अपने-आप बन जाता है (जैसा कि एन्क्रिप्ट (सुरक्षित) नहीं किया गया है). अगर कुंजी मान मैप पहले से मौजूद है, तो कुंजी/वैल्यू इसमें जोड़ दी जाती है.

एन्क्रिप्ट (सुरक्षित) की गई कुंजी की वैल्यू वाला मैप बनाने के लिए, इसका इस्तेमाल करें Key/Value Maps Management API; या एनवायरमेंट की वैल्यू मैप बनाना और उनमें बदलाव करना देखें का इस्तेमाल करें.

<Put override="false">
   <Key>
      <Parameter ref="mykeyvar"/>
   </Key>
   <Value ref="myvalvar1"/>
</Put>
डिफ़ॉल्ट लागू नहीं
मौजूदगी अगर <Get> या <Delete> नहीं है, तो ज़रूरी है उपस्थित.
टाइप लागू नहीं

विशेषताएं

नीचे दिए गए टेबल में <Put> एलिमेंट के एट्रिब्यूट के बारे में बताया गया है:

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

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

false वैकल्पिक

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

की-वैल्यू वाले मैप के लिए, सुलभता की सीमा तय करता है. डिफ़ॉल्ट दायरा यह है environment का मतलब है कि डिफ़ॉल्ट रूप से, मैप की एंट्री को सभी एपीआई प्रॉक्सी के ज़रिए शेयर किया जाता है किसी एनवायरमेंट में चलाना (उदाहरण के लिए, टेस्ट या प्रोडक्शन). अगर आपने स्कोप को apiproxy है, तो की वैल्यू मैप की एंट्री सिर्फ़ उस एपीआई प्रॉक्सी के ज़रिए ऐक्सेस की जा सकती हैं जो मैप पर वैल्यू लिखता है.

ध्यान दें कि किसी मैप या मैप एंट्री को ऐक्सेस करते समय, आपको वही स्कोप वैल्यू देनी होगी जिसका आपने इस्तेमाल किया था जब मैप बनाया गया था. उदाहरण के लिए, अगर मैप को apiproxy है, तो आपको इसकी वैल्यू वापस पाने के लिए, apiproxy स्कोप का इस्तेमाल करना होगा, परिवर्तन करने या प्रविष्टियां हटाने में मदद करता है.

<Scope>environment</Scope>
डिफ़ॉल्ट environment
मौजूदगी वैकल्पिक
टाइप स्ट्रिंग
मान्य मान:
  • organization
  • environment
  • apiproxy
  • policy (एपीआई प्रॉक्सी रिविज़न)

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

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

<!-- Specify a literal value -->
<Value>literal<Value>

या:

<!-- Specify the name of variable value to be populated at run time. -->
<Value ref="variable_name"/>

किसी हिस्से के बारे में बताने के लिए, एक से ज़्यादा <Value> एलिमेंट भी शामिल किए जा सकते हैं वैल्यू. रन टाइम के दौरान वैल्यू को जोड़ा जाता है.

यहां दिए गए उदाहरण में, केवीएम में दो कुंजियां जोड़ी गई हैं:

  • v1,v2 मानों वाली कुंजी k1
  • v3,v4 मानों वाली कुंजी k2
<InitialEntries>
   <Entry>
      <Key>
         <Parameter>k1</Parameter>
      </Key>
      <Value>v1</Value>
      <Value>v2</Value>
   </Entry>
   <Entry>
      <Key>
         <Parameter>k2</Parameter>
      </Key>
      <Value>v3</Value>
      <Value>v4</Value>
   </Entry>
</InitialEntries>

यहां दिए गए उदाहरण में, दो वैल्यू का इस्तेमाल करके एक पासकोड बनाया गया है. मान लें कि संगठन की नाम foo_org है, एपीआई प्रॉक्सी का नाम bar है, और एनवायरमेंट है test:

  • bar,test मानों वाली कुंजी foo_org
<Put>
    <Key>
        <Parameter ref="organization.name"/>
    </Key>
    <Value ref="apiproxy.name"/>
    <Value ref="environment.name"/>
</Put>
डिफ़ॉल्ट लागू नहीं
मौजूदगी ज़रूरी है
टाइप स्ट्रिंग

विशेषताएं

नीचे दिए गए टेबल में <Value> एलिमेंट के एट्रिब्यूट के बारे में बताया गया है:

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
संदर्भ उस वैरिएबल का नाम बताता है जिसके मान में आपकी पसंद की(के) कुंजी मान हैं सेट. लागू नहीं अगर ओपनिंग और क्लोज़िंग टैग. लिटरल वैल्यू दिए जाने पर पाबंदी लगाई जाती है.

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

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

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.keyvaluemapoperations.SetVariableFailed 500

This error occurs if you try to retrieve a value from an encrypted key value map and set the value to a variable whose name does not have the prefix private. The prefix, which is required for basic security purposes during debugging, hides the encrypted values from API proxy Trace and debug sessions.

steps.keyvaluemapoperations.UnsupportedOperationException 500

This error occurs if the mapIdentifier attribute is set to empty string in the Key Value Map Operations policy.

Deployment errors

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

Error name Cause Fix
InvalidIndex If the index attribute specified in the <Get> element of Key Value Map Operations policy is zero or a negative number, then the deployment of the API proxy fails. The index starts from 1, so an index of zero or negative integer is considered as invalid.
KeyIsMissing This error occurs if the <Key> element is completely missing or <Parameter> element is missing within <Key> element underneath the <Entry> of the <InitialEntries> element of the Key Value Map Operations policy.
ValueIsMissing This error occurs if the <Value> element is missing underneath the <Entry> element of the <InitialEntries> element of the Key Value Map Operations policy.

स्कीमा

इस्तेमाल की जानकारी

की-वैल्यू मैप की खास जानकारी के लिए, की वैल्यू मैप के साथ काम करना देखें.

की वैल्यू वाला मैप स्टोर, फ़ॉर्मैट की गई डेटा के लिए लाइटवेट परसिस्टेंस मैकेनिज़्म देता है की/वैल्यू पेयर. नीतियों या कोड की मदद से, रनटाइम के दौरान इन्हें ऐक्सेस किया जा सकता है. मैप में सभी चीज़ें शामिल होती हैं key=value फ़ॉर्मैट में आर्बिट्रेरी डेटा.

उदाहरण के लिए, localhost=127.0.0.1, zip_code=94110 या first_name=felix. पहले उदाहरण में, localhost एक कुंजी है, और 127.0.0.1 एक मान है. हर कुंजी/वैल्यू पेयर को कुंजी में एंट्री के तौर पर सेव किया जाता है वैल्यू मैप. की-वैल्यू वाले मैप में कई एंट्री सेव की जा सकती हैं.

यहां की-वैल्यू मैप इस्तेमाल करने का एक उदाहरण दिया गया है. मान लीजिए कि आपको आईपी पतों की एक सूची सेव करनी है विभिन्न बैकएंड के साथ संबद्ध का इस्तेमाल करें. आप ipAddresses नाम का एक की-वैल्यू मैप बना सकते हैं, जिसमें कुंजी/वैल्यू पेयर की सूची, एंट्री के तौर पर. उदाहरण के लिए, यह JSON ऐसा मैप दिखा सकता है:

{
  "entry" : [ {
    "name" : "Development",
    "value" : "65.87.18.18"
  }, {
    "name" : "Staging",
    "value" : "65.87.18.22"
  } ],
  "name" : "ipAddresses"
}

इस स्ट्रक्चर का इस्तेमाल करके, आईपी पतों का ऐसा स्टोर बनाया जा सकता है जिसका इस्तेमाल नीतियों में हो सके रनटाइम के दौरान, अनुमति वाले आईपी की सूची या ब्लॉकलिस्ट को लागू करने के लिए, डाइनैमिक तौर पर बैकएंड टारगेट चुना जा सकता है पता वगैरह. आम तौर पर, KeyValueMapOperations नीति का इस्तेमाल डेटा को सेव या वापस पाने के लिए किया जाता है लंबे समय तक मौजूद रहने वाली ऐसी जानकारी जिसे अलग-अलग तरह के अनुरोधों/रिस्पॉन्स वाले लेन-देन के लिए फिर से इस्तेमाल करने की ज़रूरत हो.

कुंजी/मान मैप, KeyValueMapOperations नीति के ज़रिए या सीधे Apigee Edge मैनेजमेंट एपीआई. Organization key/value Maps API API के बारे में ज़्यादा जानकारी के लिए, management API का रेफ़रंस देखें. एपीआई का इस्तेमाल इन कामों के लिए किया जा सकता है उदाहरण के लिए, पासकोड/वैल्यू स्टोर में बड़े डेटा सेट अपलोड करना या कुंजी/वैल्यू को मैनेज करने के लिए स्क्रिप्ट बनाना के रूप में दिखाई जाती है. आपको API के साथ ऐक्सेस करने से पहले एक कुंजी/मान मैप बनाना होगा KeyValueMapOperations नीति.

कुंजी के नाम तय करना और उन्हें वापस पाना

<Parameter> और <Value> एलिमेंट का इस्तेमाल करके, ये काम किए जा सकते हैं लिटरल वैल्यू (जहां वैल्यू ओपनिंग और क्लोज़िंग टैग के बीच में होती है) होती है या फिर इसका इस्तेमाल करती है ref एट्रिब्यूट का इस्तेमाल करके, उस वैरिएबल का नाम बताएं जिसके मान का इस्तेमाल इस वैरिएबल पर किया जाना चाहिए रनटाइम.

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

<Parameter>key_name_literal</Parameter>
<Parameter ref="key.name.variable"/>

पहले उदाहरण में, "key_name_literal" की लिटरल वैल्यू को नाम. दूसरे उदाहरण में, key.name.variable में जो भी वैल्यू है वह कुंजी का नाम डालें. उदाहरण के लिए, अगर key.name.variable में मान foo है, तो कुंजी का नाम "foo" होगा.

जब किसी जीईटी ऑपरेशन की मदद से किसी कुंजी और 'की' वैल्यू को फिर से हासिल करना हो (या किसी DELETE कार्रवाई), <पैरामीटर> सेटिंग को केवीएम में मौजूद कुंजी के नाम से मेल खाना चाहिए. इसके लिए उदाहरण के लिए, अगर KVM में कुंजी का नाम "foo" है, तो आप <Parameter>foo</Parameter> या कोई ऐसा वैरिएबल तय करें जिसमें मान "foo", जैसे: <Parameter ref="variable.containing.foo"/>.

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