KeyValueMapOperations politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Edge kullanıcı arayüzündeki Anahtar/Değer Eşleme İşlemleri simgesi

Ne

Apigee Edge'de bulunan Anahtar/Değer Eşlemesi (KVM) mağazasına politika tabanlı erişim sağlar. Anahtar/değer çiftleri; PUT, GET veya DELETE işlemlerini belirten KeyValueMapoperas politikaları yapılandırılarak depolanabilir, alınabilir ve adlandırılmış mevcut haritalardan silinebilir. (Bu işlemlerden en az biri politika tarafından gerçekleştirilmelidir.)

Videolar

KVM'ler hakkında daha fazla bilgi edinmek için aşağıdaki videoları izleyin.

Video Açıklama
Neden Anahtar Değer Eşlemeleri? KVM'lere neden ihtiyaç duyduğunuzu ve bunların nasıl çalıştığını öğrenin.
Kullanıcı arayüzünü kullanarak KVM oluşturma ve çalışma zamanında KVM alma Bir KVM oluşturun, bir KVM politikası kullanarak değerini alın ve akış değişkenlerini kullanarak değeri API isteğine ekleyin.
API çalışma zamanında bir KVM oluşturma ve güncelleme KVM politikası kullanarak API çalışma zamanında bir KVM oluşturun.
Performansı artırmak için KVM'yi önbelleğe alma Verileri önbelleğe alarak KVM Politikası'nın performansını iyileştirin.
Şifrelenmiş KVM'yi depola KVM politikası ile özel değişkenleri kullanarak hassas bilgileri KVM'de şifrelenmiş bir biçimde depolayın ve çalışma zamanında değeri alın.
KVM kapsamını kullanarak erişimi yönetme KVM politika kapsamı özelliğini kullanarak KVM'yi kuruluş, ortam, API proxy'si veya API proxy düzeltmesi ile kısıtlayın.
API çalışma zamanında KVM girişlerini silme KVM politikası DELETE işlemini kullanarak API çalışma zamanında KVM girişlerini silin.

Sana Özel

Bir değişmez değerle PUT KVM

Aşağıdaki politika çalıştırıldığında, FooKVM adında şifrelenmiş bir KVM oluşturur, ardından foo ve bar değişmez dizeleriyle (değişkenlerden çıkarılan değerlerle ayarlanmaz) ayarlanmış iki değerle FooKey_1 adlı bir anahtar oluşturur. Bir sonraki örnekte anahtarı GET yaptığınızda, istediğiniz değeri almak için bir dizin numarası belirtirsiniz.

<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>

Kapsamın "Environment" (ortam) olduğuna dikkat edin. Bu, KVM'yi yönetim kullanıcı arayüzünde, API'ler > Ortam Yapılandırması > Anahtar/Değer Haritaları altında görebileceğiniz anlamına gelir. Bu sayfada gösterilen KVM'lerin tamamı, seçilen ortama dahil edilir.

Bir değişmez değerden KVM ALIN

Bu politika önceki örnekte verilen FooKVM eşlemesine bakar, FooKey_1 anahtarından ikinci değeri (index="2") alır ve foo_variable adlı bir değişkende depolar.

<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>

KVM'yi değişkenle PUT

Yararlı bir anahtar/değer eşleme örneği, bir URL kısaltma hizmetidir. Anahtar/değer eşlemesi, kısaltılmış URL'leri karşılık gelen tam URL'lerle birlikte depolayacak şekilde yapılandırılabilir.

Bu politika örneği bir anahtar/değer eşlemesi oluşturur. Politika, ilişkili iki değere sahip bir anahtarı "urlMapper" adlı bir anahtar/değer eşlemesine PUT eder.

<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>

Bu örnekteki urlencoding.requesturl.hashed anahtarı, özelleştirilebilen bir değişken örneğidir. Karma oluşturma işlemi uygulanmış istek URL'si, kod (ör. JavaScript veya Java) ile oluşturulur ve ardından KeyValueMapActionss politikasının erişebileceği bu değişkende saklanır.

Her bir anahtar (requesturl.hashed) için iki değer depolanır:

  • urlencoding.longurl.encoded adlı özelleştirilebilen değişkenin içeriği
  • Önceden tanımlı request.queryparam.url değişkeninin içeriği

Örneğin, politika çalışma zamanında yürütüldüğünde değişkenlerin değerleri aşağıdaki gibi olabilir:

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

Aşağıdaki anahtar/değer eşlemesi ve giriş, Edge'in anahtar/değer deposunda oluşturulur ve politikanın eklendiği API proxy'sine ayarlanır:

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

Giriş, silinene kadar kullanılmaya devam eder. Anahtar/değer çifti mağaza girişleri, bulut çalıştıran Edge örneklerine dağıtılır.

Değişkenden KVM ALMA

Yararlı bir anahtar/değer eşleme örneği, bir URL "kısaltma" hizmetidir. Anahtar/değer eşlemesi, kısaltılmış URL'leri karşılık gelen tam URL'lerle birlikte depolayacak şekilde yapılandırılabilir.

Anahtar/değer çifti eşleme girişinin değerini (ör. KeyValueMapTransactions PUT sekmesinde ele alınan) almak için anahtar/değer eşlemesini ALACAK bir politika yapılandırın:

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

Bu politika yürütüldüğünde urlencoding.requesturl.hashed değişkeninin değeri ed24e12820f2f900ae383b7cc4f2b31c402db1be ise urlencoding.shorturl adlı özelleştirilebilen değişken http://tinyurl.com/38lwmlr değerine ayarlanır.

Veriler alındığına göre diğer politikalar ve kodlar bu değişkenlerden değeri çıkararak verilere erişebilir.

KVM'den şifrelenmiş değer AL

Bir anahtar/değer eşlemesi şifrelenmişse assignTo özellik değerinde "private." önekini kullanarak değerleri alın. Bu örnekte private.encryptedVar değişkeni, anahtar/değer eşlemesinin foo anahtarının şifresi çözülmüş değerini barındırır. Şifrelenmiş anahtar/değer eşlemeleri oluşturma hakkında bilgi edinmek için Anahtar/Değer Haritaları Management API'nin "create" konularına bakın.

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

Veriler alındığına göre diğer politikalar ve kodlar söz konusu değişkendeki değeri çıkararak verilere erişebilir.


Öğe referansı

Öğe referansı, KeyValueMapTransactions politikasının öğelerini ve özelliklerini açıklar:

<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>

<KeyValueMapTransactions> özellikleri

Aşağıdaki örnekte <KeyValueMapOperations> etiketindeki özellikler gösterilmektedir:

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

Aşağıdaki tabloda <KeyValueMapOperations> etiketine özgü özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
mapIdentifier

Bu politika tarafından oluşturulan veya yönetim kullanıcı arayüzünde oluşturulan bir haritaya erişirken kullanılacak bir tanımlayıcıyı belirtir.

KVM adı, Herkese Açık Bulut için Apigee Edge'de büyük/küçük harfe duyarlıdır. Örneğin foobar, FooBar değerinden farklıdır.

Bu özelliği hariç tutarsanız kvmap adlı bir KVM kullanılır.

Organization/Environment/apiproxy kapsamında, kendi harita adınızı belirtmek için mapIdentifier özelliğini kullanabilirsiniz.

Yok İsteğe bağlı

Aşağıdaki tabloda, tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
name

Politikanın dahili adı. name özelliğinin değeri harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içerebilir. Bu değer 255 karakterden uzun olamaz.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için <DisplayName> öğesini kullanın.

Yok Gerekli
continueOnError

Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İsteğe bağlı
enabled

Politikayı uygulamak için true değerine ayarlayın.

Politikayı devre dışı bırakmak için false olarak ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanmaz.

true İsteğe bağlı
async

Bu özellik kullanımdan kaldırıldı.

false Kullanımdan kaldırıldı

<DisplayName> öğesi

Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.

<DisplayName>Policy Display Name</DisplayName>
Varsayılan

Yok

Bu öğeyi çıkarırsanız politikanın name özelliğinin değeri kullanılır.

Varlık İsteğe bağlı
Tür Dize

<Delete> öğesi

Belirtilen anahtar/değer çiftini siler. En az bir <Get>, <Put> veya <Delete> kullanılmalıdır.

KVM adını üst öğede mapIdentifier özelliğiyle belirttiğinizden emin olun. Örneğin:

<Delete>
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Delete>
Varsayılan Yok
Varlık <Get> veya <Put> yoksa gereklidir.
Tür Yok

<Entry> öğesi

Başlatıldığında anahtar/değer eşlemesinde doldurulan anahtar/değer eşlemeleri için çekirdek değerler.

Edge for Public Cloud'da anahtar boyutu 2 KB ile sınırlıdır. Örneğin:

<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>
Varsayılan Yok
Varlık İsteğe bağlı
Tür Yok

<CustomCache> öğesi

Kullanımdan kaldırıldı. Bunun yerine <Scope> öğesini kullanın.

<ExpiryTimeInSecs> öğesi

Edge'in belirtilen KVM'den önbelleğe alınan değerini yenilemesi için geçmesi gereken süreyi saniye cinsinden belirtir.

0 veya -1 değeri ya da bu öğenin hariç tutulması, 300 saniye olan varsayılan değerin kullanıldığı anlamına gelir. Örneğin:

<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
Varsayılan 300 (5 dakika)
Varlık İsteğe bağlı
Tür Tamsayı

KVM, anahtarları ve değerleri bir NoSQL veritabanında depolayan uzun vadeli bir kalıcılık mekanizmasıdır. Bu nedenle, çalışma zamanında bir KVM'den okuma, proxy performansını yavaşlatabilir. Performansı iyileştirmek için Edge'de, çalışma zamanı sırasında KVM anahtarlarını/değerlerini bellekte önbelleğe almayı sağlayan yerleşik bir mekanizma bulunur. Bu KVM İşlemleri politikası, GET işlemleri için her zaman önbellekten okur.

<ExpiryTimeInSecs> öğesi, politikada kullanılan anahtarların/değerlerin KVM'den tekrar yenilenmeden önce önbellekte ne kadar süreyle saklanacağını kontrol etmenizi sağlar. Ancak GET ve PUT işlemlerinin önbellek geçerlilik süresini etkileme şekli arasında bazı farklılıklar vardır.

GET - Bir KVM GET işlemi ilk kez yürütüldüğünde, KVM'den istenen anahtarlar/değerler (adı politikanın kök mapIdentifier özelliğinde belirtilir) önbelleğe yüklenir ve burada, aşağıdakilerden biri gerçekleşene kadar sonraki GET işlemleri için kalır:

  • <ExpiryTimeInSecs> politikasında belirtilen saniye sayısının süresi doluyor.
    veya
  • Bir KVM politikasındaki PUT işlemi, mevcut değerlerin (aşağıda açıklanmıştır) üzerine yazar.

PUT: PUT işlemi, belirtilen KVM'ye anahtarları/değerleri yazar. PUT, zaten önbellekte bulunan bir anahtara yazıyorsa bu önbellek hemen yenilenir ve yeni değeri, politikanın <ExpiryTimeInSecs> öğesinde belirtilen saniye sayısı boyunca tutar.

Örnek: Bir KVM'yi Önbelleğe Alma

  1. Bir GET işlemi "rating" değerini getirir ve bu değer,"10" değerini önbelleğe ekler. Politikadaki <ExpiryTimeInSecs> 60'tır.
  2. 30 saniye sonra, GET politikası tekrar yürütülür ve önbellekten "10" değerini alır.
  3. 5 saniye sonra PUT politikası "rating" (derece) değerini "8" olarak günceller ve PUT politikasındaki <ExpiryTimeInSecs> değeri 20 olur. Önbellek, yeni değerle hemen yenilenir ve artık 20 saniye boyunca önbellekte kalacak. (PUT gerçekleşmemiş olsaydı, başlangıçta ilk GET tarafından doldurulan önbellek, ilk 60 saniyeden geriye kalan 30 saniye daha kalırdı.)
  4. 15 saniye sonra, başka bir GET yürütülür ve "8" değerini alır.

<Get> öğesi

Belirtilen anahtarın değerini alır. En az bir <Get>, <Put> veya <Delete> kullanılmalıdır.

KVM adını üst öğede mapIdentifier özelliğiyle belirttiğinizden emin olun.

Bir KVM'den birden fazla öğe almak için politikaya birden fazla Get bloğu ekleyebilirsiniz.

Varsayılan Yok
Varlık <Put> veya <Delete> yoksa gereklidir.
Tür Yok

Bir KVM'den tek bir öğe alma

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

Bir KVM'den birden fazla öğe alma

Aşağıdaki örnekte, aşağıdaki anahtarlara ve değerlere sahip bir KVM'yi varsayalım. KVM, tüm zamanların en popüler filmlerinin yer aldığı bir liste yayınlamanın yanı sıra tüm büyük filmlerin yönetmen adını da saklar.

Anahtar Değer
top_movies Prenses Gelin,Baba,Yurttaş Kane
Citizen Kane Orson Welles
Prenses Gelin Rob Reiner
Baba Francis Ford Coppola

Güncel en popüler filmi ve yönetmeninin adını almak için kullanabileceğimiz bir KVM politika yapılandırması şu şekildedir:

<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>

API proxy'si çağrıldığında, Edge API proxy akışında kullanabileceğiniz aşağıdaki değişkenleri oluşturur:

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

Özellikler

Aşağıdaki tabloda <Get> öğesinin özellikleri açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
assignTo

Alınan değerin atanması gereken değişken.

Anahtar/değer eşlemesi şifrelenmişse assignTo adını "private." ile başlatın. Örneğin:

<Get assignTo="private.myvar">

Ön eki kullanmadan şifrelenmiş bir anahtar/değer eşlemesi almaya çalışırsanız politika hata verir. Hata ayıklama sırasında temel güvenlik nedeniyle gerekli olan ön ek, şifrelenmiş değerleri API Proxy Trace ve hata ayıklama oturumlarından gizler.

Şifrelenmiş anahtar/değer eşlemeleri oluşturma hakkında bilgi edinmek için Anahtar/Değer Haritaları Management API ve Ortam anahtar değeri eşlemeleri oluşturma ve düzenleme konularına bakın.

Yok Gerekli
indeks

Birden çok değerli bir anahtardan alınacak öğenin dizin numarası (1 tabanlı bir dizinde). Örneğin, index=1 belirtilmesi ilk değeri döndürür ve assignTo değişkenine atar. Herhangi bir dizin değeri belirtilmezse bu girişin tüm değerleri değişkene java.util.List olarak atanır.

Örneğin, Örnekler bölümündeki "KVM'den Şifrelenmiş Değer Alma" sekmesine bakın.

Yok İsteğe bağlı

<InitialEntries> öğesi

Başlatıldığında anahtar/değer eşlemesinde doldurulan anahtar/değer eşlemeleri için çekirdek değerler. KVM adını üst öğede mapIdentifier özelliğiyle birlikte belirttiğinizden emin olun. Örneğin:

<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>

Bu öğeyi kullanırken politikayı proxy'nin dağıtılmış bir sürümünde yönetim kullanıcı arayüzüne kaydettiğinizde veya bu öğe ile birlikte politikayı içeren API proxy paketini dağıttığınızda anahtarlar KVM'de otomatik olarak oluşturulur (şifrelenmemiş olarak). Politikadaki değerler KVM'deki değerlerden farklıysa proxy dağıtıldığında KVM'deki değerlerin üzerine yazılır. Tüm yeni anahtarlar/değerler, mevcut anahtarlar/değerlerle birlikte mevcut KVM'ye eklenir.

Bu öğe tarafından doldurulan anahtarlar ve değerler değişmez değerler olmalıdır. Örneğin, <Parameter ref="request.queryparam.key"> bu öğe içinde desteklenmez.

Anahtar boyutu, hem Herkese Açık Bulut İçin Edge hem de Özel Bulut için Edge için 2 KB ile sınırlıdır. KVM değeri 2 KB ile sınırlıdır.

Şifrelenmiş bir KVM oluşturmak için Anahtar/Değer Haritaları yönetim API'sini kullanın.

Varsayılan Yok
Varlık İsteğe bağlı
Tür Yok

<Key> öğesi

Bir anahtar/değer eşleme girişinde anahtarı belirtir. Bir anahtar bileşik olabilir. Diğer bir deyişle, anahtarı oluşturmak için birden fazla parametre eklenebilir. Örneğin, userID ve role bir key oluşturmak için birleştirilebilir. Örneğin:

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

Anahtar adının nasıl ayarlanacağıyla ilgili ayrıntılar için <Parameter> öğesine bakın.

Edge for Public Cloud'da anahtar boyutu 2 KB ile sınırlıdır. Daha fazla bilgi için Edge for Public Cloud API ile Private Cloud API arasındaki farklar bölümüne bakın.

Varsayılan Yok
Varlık İsteğe bağlı
Tür Yok

<Parametre> öğesi

Bir anahtar/değer çiftindeki anahtarı belirtir. Bu öğe, anahtar/değer çiftini oluştururken, koyarken, alırken veya silerken adı belirtir.

Adı, aşağıdakileri kullanarak belirtebilirsiniz:

  • Bir değişmez dize

    <Key>
      <Parameter>literal</Parameter>
    </Key>
    
  • Çalışma zamanında ref özelliği kullanılarak alınacak bir değişken

    <Key>
      <Parameter ref="variable_name"/>
    </Key>
    
  • Değişken referansların ve hazır değerlerin kombinasyonu

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

Temel öğesi birden fazla Parametre öğesi içerdiğinde etkili anahtar dizesi her parametreye ait değerlerin çift alt çizgiyle birleştirilmesiyle oluşur. Örneğin, yukarıdaki örnekte apiproxy.name değişkeni "abc1" değerine sahipse etkili anahtar targeturl__abc1__weight olur.

Bir anahtar/değer girişi alıyor, güncelliyor veya silerken anahtar adı, anahtar/değer eşlemesindeki anahtar adıyla eşleşmelidir. Yönergeler için Anahtar adlarını belirtme ve alma bölümüne bakın.

Varsayılan Yok
Varlık Gerekli
Tür Dize

Özellikler

Aşağıdaki tabloda <Parameter> öğesinin özellikleri açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
referans Değeri oluşturmak, almak veya silmek istediğiniz anahtarın tam adını içeren bir değişkenin adını belirtir. Yok Açılış ve kapanış etiketleri arasında değişmez değer belirtilmemişse gereklidir. Değişmez değer verilirse yasaktır.

<Put> öğesi

Anahtar/değer eşlemesi şifrelenmiş veya şifrelenmemiş olsun, anahtar/değer çiftine bir anahtar/değer çifti yazar. Üst öğedeki mapIdentifier özelliğinde belirtilen anahtar/değer eşlemesi yoksa harita otomatik olarak oluşturulur (şifrelenmemiş olarak). Anahtar/değer çifti eşlemesi zaten mevcutsa anahtar/değer çiftine eklenir.

Şifrelenmiş anahtar/değer eşlemesi oluşturmak için Anahtar/Değer Haritaları Yönetim API'sini kullanın veya kullanıcı arayüzünde şifrelenmiş ortam kapsamlı KVM'ler oluşturmak için Ortam anahtar/değer çifti eşlemeleri oluşturma ve düzenleme konusuna bakın.

<Put override="false">         
   <Key>             
      <Parameter ref="mykeyvar"/>         
   </Key>         
   <Value ref="myvalvar1"/>     
</Put>
Varsayılan Yok
Varlık <Get> veya <Delete> yoksa gereklidir.
Tür Yok

Özellikler

Aşağıdaki tabloda <Put> öğesinin özellikleri açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
geçersiz kılma

true değerine ayarlanırsa bir anahtarın değerini geçersiz kılar.

false İsteğe bağlı

<Scope> öğesi

Anahtar/değer eşlemeleri için erişilebilirlik sınırını tanımlar. Varsayılan kapsam environment'tır. Yani harita girişleri varsayılan olarak bir ortamda (ör. test veya üretim) çalışan tüm API proxy'leri tarafından paylaşılır. Kapsamı apiproxy olarak ayarlarsanız anahtar/değer eşlemedeki girişlere yalnızca değerleri haritaya yazan API proxy'si tarafından erişilebilir.

Bir haritaya veya harita girişine erişirken, harita oluşturulurken kullandığınız kapsam değerini belirtmeniz gerektiğini unutmayın. Örneğin harita apiproxy kapsamıyla oluşturulduysa değerleri alırken, değişiklik yaparken veya girişleri silerken apiproxy kapsamını kullanmanız gerekir.

<Scope>environment</Scope>
Varsayılan environment
Varlık İsteğe bağlı
Tür Dize
Geçerli değerler:
  • organization
  • environment
  • apiproxy
  • policy (API proxy düzeltmesi)

<Value> öğesi

Bir anahtarın değerini belirtir. Değeri değişmez dize olarak veya ref özelliğini kullanarak çalışma zamanında alınacak bir değişken olarak belirtebilirsiniz:

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

veya:

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

Çok parçalı bir değer belirtmek için birden çok <Value> öğesi de ekleyebilirsiniz. Değerler çalışma zamanında birleştirilir.

Aşağıdaki örnekte, KVM'ye iki anahtar eklenmiştir:

  • v1,v2 değerlerine sahip k1 anahtarı
  • v3,v4 değerlerine sahip k2 anahtarı
<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>

Aşağıdaki örnekte bir anahtar iki değerle oluşturulmuştur. Kuruluş adının foo_org, API proxy adının bar ve ortamın test olduğunu varsayalım:

  • bar,test değerlerine sahip foo_org anahtarı
<Put>
    <Key>
        <Parameter ref="organization.name"/>
    </Key>
    <Value ref="apiproxy.name"/>
    <Value ref="environment.name"/>
</Put>
Varsayılan Yok
Varlık Gerekli
Tür Dize

Özellikler

Aşağıdaki tabloda <Value> öğesinin özellikleri açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
referans Değeri, ayarlamak istediğiniz anahtar değerleri içeren bir değişkenin adını belirtir. Yok Açılış ve kapanış etiketleri arasında değişmez değer belirtilmemişse gereklidir. Değişmez değer verilirse yasaktır.

Hata referansı

Edge politikalarından döndürülen hatalar, Hata kodu referansı bölümünde açıklanan tutarlı bir biçimde olur.

Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Politika yürütüldüğünde bu hatalar ortaya çıkabilir.

Hata kodu HTTP durumu Neden Düzelt
steps.keyvaluemapoperations.SetVariableFailed 500

Bu hata, şifrelenmiş bir anahtar/değer eşlemesinden bir değer almaya çalışır ve değeri, adında private öneki olmayan bir değişken olarak ayarlarsanız ortaya çıkar. Hata ayıklama sırasında temel güvenlik amacıyla gerekli olan ön ek, şifrelenmiş değerleri API Proxy Trace ve hata ayıklama oturumlarından gizler.

steps.keyvaluemapoperations.UnsupportedOperationException 500

Bu hata, mapIdentifier özelliği Anahtar/Değer Eşleme İşlemleri politikasında boş dize olarak ayarlanırsa ortaya çıkar.

Dağıtım hataları

Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.

Hata adı Neden Düzelt
InvalidIndex Anahtar Değer Eşleme İşlemleri politikasının <Get> öğesinde belirtilen index özelliği sıfır veya negatif bir sayıysa API proxy'sinin dağıtımı başarısız olur. Dizin, 1 değerinden başlar. Bu nedenle sıfır veya negatif tam sayı içeren bir dizin geçersiz olarak kabul edilir.
KeyIsMissing Bu hata, Anahtar/Değer Eşleme İşlemleri politikasının <InitialEntries> öğesinin <Entry> altındaki <Key> öğesi içinde <Key> öğesi tamamen eksik olduğunda veya <Parameter> öğesi eksik olduğunda ortaya çıkar.
ValueIsMissing Bu hata, Anahtar/Değer Eşleme İşlemleri politikasının <InitialEntries> öğesinin <Entry> öğesi altında <Value> öğesi eksikse ortaya çıkar.

Şemalar

Kullanım notları

Anahtar/değer eşlemelerine genel bir bakış için Anahtar/değer eşlemeleriyle çalışma bölümünü inceleyin.

Anahtar/değer eşleme deposu, anahtar/değer çifti olarak biçimlendirilen veriler için basit bir kalıcılık mekanizması sağlar. Bunlara çalışma zamanında politikalar veya kod aracılığıyla erişebilirsiniz. Bir harita, key=value biçiminde rastgele veriler içerir.

Örneğin localhost=127.0.0.1, zip_code=94110 veya first_name=felix. İlk örnekte localhost bir anahtar, 127.0.0.1 ise bir değer'dir. Her anahtar/değer çifti, anahtar/değer eşlemesinde bir giriş olarak depolanır. Anahtar/değer çifti eşlemelerinde çok sayıda giriş bulunabilir.

Anahtar/değer eşlemelerini kullanmayla ilgili bir örneği aşağıda bulabilirsiniz. Çeşitli arka uç ortamları ile ilişkili IP adreslerinin bir listesini depolamanız gerektiğini varsayalım. Giriş olarak anahtar/değer çiftlerinin listesini içeren ipAddresses adında bir anahtar/değer eşlemesi oluşturabilirsiniz. Örneğin, bu JSON aşağıdaki tür bir haritayı temsil edebilir:

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

Bu yapıyı kullanarak, çalışma zamanında politikalar tarafından IP izin verilenler listesine veya ret listesine eklemeyi zorunlu kılmak veya dinamik olarak arka uç hedef adresi seçmek gibi işlemler için kullanılabilecek IP adresleri deposunu oluşturabilirsiniz. KeyValueMapTransactions politikası, genellikle birden fazla istek/yanıt işleminde yeniden kullanılması gereken uzun ömürlü bilgileri depolamak veya almak için kullanılır.

Anahtar/değer eşlemeleri, KeyValueMapTransactions politikası veya doğrudan Apigee Edge Management API aracılığıyla değiştirilebilir. Kuruluş anahtar/değer çiftleri eşlemeler API'si API'siyle ilgili ayrıntılar için Management API referansına bakın. API'yi örneğin, anahtar/değer deposuna büyük veri kümeleri yüklemek veya anahtar/değer eşleme girişlerini yönetmek için komut dosyaları oluşturmak amacıyla kullanabilirsiniz. KeyValueMapTransactions politikasıyla erişmeden önce API ile bir anahtar/değer eşlemesi oluşturmanız gerekir.

Anahtar adlarını belirleme ve alma

<Parameter> ve <Value> öğeleriyle sabit bir değer belirtebilir (burada değer, açılış ve kapanış etiketleri arasında yer alır) ya da değerinin çalışma zamanında kullanılması gereken bir değişkenin adını belirtmek için ref özelliğini kullanabilirsiniz.

Parametre öğesi, oluşturulan anahtarın adının yanı sıra almak veya silmek istediğiniz anahtar adını belirlediği için özel olarak bahsetmeyi hak eder. Aşağıda iki örnek verilmiştir. Birincisi kelimenin tam anlamıyla bir anahtar adını, ikincisi ise değişken kullanarak anahtar adını belirtir. Bir KVM'de anahtar oluşturmak için aşağıdakilerin kullanıldığını varsayalım:

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

İlk örnekte, "key_name_literal" değerinin değişmez değeri KVM'de anahtar adı olarak depolanır. İkinci örnekte, key.name.variable içindeki değer, KVM'deki anahtarın adı olur. Örneğin, key.name.variable içinde foo değeri varsa anahtar "foo" olarak adlandırılır.

Anahtarı ve anahtar değerini GET işlemiyle (veya DELETE işlemiyle) almak istediğinizde <Parametre> ayarının KVM'deki anahtar adıyla eşleşmesi gerekir. Örneğin, KVM'deki anahtar adı "foo" ise değişmez değeri <Parameter>foo</Parameter> ile belirtebilir veya tam değeri "foo" içeren bir değişken belirtebilirsiniz. Örneğin: <Parameter ref="variable.containing.foo"/>.

İlgili konular