Norme relative a KeyValueMapOperations

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza documentazione di Apigee Edge.

Icona Operazioni mappa chiave-valore nell'interfaccia utente di Apigee

Cosa

Fornisce l'accesso basato su criteri a un archivio KVM (Key Value Map) disponibile in Apigee. Le coppie chiave/valore possono essere memorizzate, recuperate ed eliminate dalle mappe esistenti denominate configurando i criteri KeyValueMapOperations che specificano rispettivamente le operazioni PUT, GET o DELETE. Almeno una di queste operazioni deve essere eseguita dal criterio.

Questo criterio è un criterio estensibile e il suo utilizzo potrebbe comportare implicazioni in termini di costi o utilizzo, a seconda della licenza Apigee. Per informazioni sui tipi di criteri e sulle implicazioni per l'utilizzo, consulta Tipi di criteri.

Video: il seguente video fornisce un'introduzione generale alle KVM.

Esempi

PUT KVM con un valore letterale

Quando viene eseguito il seguente criterio, viene creata una KVM criptata denominata FooKVM, quindi viene creata una chiave denominata FooKey_1 con due valori impostati con stringhe letterali foo e bar (non impostati con valori estratti dalle variabili). Quando Usa GET la chiave nel prossimo esempio, specifichi un numero di indice per recuperare il valore desiderato.

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

Tieni presente che l'ambito è environment. Ciò significa che puoi vedere il KVM nella UI in API > Configurazione dell'ambiente > Mappe chiave-valore. Le KVM mostrati in quella pagina hanno tutti l'ambito nell'ambiente selezionato.

OTTIENI KVM da un valore letterale

Questo criterio esamina la mappa FooKVM dell'esempio precedente, recupera il secondo valore (index="2") dalla chiave FooKey_1 e lo memorizza in una variabile chiamata 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>

Accedi a una KVM in modo dinamico

Questo criterio utilizza l'elemento <MapName> per fare riferimento a una KVM in modo dinamico con di una variabile di flusso. L'elemento ottiene l'identificatore KVM dalla variabile di flusso. Tieni presente che l'attributo mapIdentifier viene omesso; non puoi utilizzare <MapName> con l'attributo mapIdentifier.

<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM">
  <DisplayName>GetKVM</DisplayName>
  <MapName ref="flow.variable"/>
  <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
  <Scope>environment</Scope>
  <Get assignTo="foo_variable" index="2">
    <Key>
      <Parameter>FooKey_1</Parameter>
    </Key>
  </Get>
</KeyValueMapOperations>

PUT KVM con una variabile

Un semplice esempio di KVM utile è un servizio di accorciamento degli URL. Il KVM potrebbe essere configurato per memorizzare gli URL abbreviati insieme agli URL completi corrispondenti.

Questo esempio di criterio crea una KVM. Il criterio utilizza il comando PUT per inserire una chiave con due valori associati in un KVM denominato 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>

La chiave in questo esempio, urlencoding.requesturl.hashed, è un esempio di variabile personalizzata. L'URL della richiesta sottoposta ad hashing viene generato dal codice (ad esempio JavaScript o Java) e poi memorizzato in questa variabile, a cui può accedere il criterio KeyValueMapOperations.

Per ogni chiave, requesturl.hashed, vengono archiviati due valori:

  • I contenuti della variabile personalizzata denominata urlencoding.longurl.encoded
  • I contenuti della variabile predefinita request.queryparam.url

Ad esempio, quando il criterio viene eseguito in fase di runtime, i valori delle variabili possono essere questi: che segue:

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

Il seguente KVM e voce verrebbero generati nello spazio dei dati chiave/valore di Apigee e limitati al proxy API a cui è associato il criterio:

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

La voce verrà mantenuta fino a quando non verrà eliminata. Le voci dell'archivio chiave/valore sono distribuite tra di Apigee che eseguono il cloud.

GET KVM da una variabile

Un semplice esempio di KVM utile è un servizio di abbreviazione degli URL. Il KVM potrebbe essere configurato per memorizzare gli URL abbreviati insieme agli URL completi corrispondenti.

Per recuperare il valore della voce KVM, come quello indicato nella Scheda KeyValueMapOperations PUT, configura un criterio per GET la KVM:

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

Quando viene eseguito questo criterio, se il valore dell'attributo La variabile urlencoding.requesturl.hashed è ed24e12820f2f900ae383b7cc4f2b31c402db1be, quindi la variabile personalizzata denominata Verrà impostato urlencoding.shorturl con il valore http://tinyurl.com/38lwmlr.

Ora che i dati sono stati recuperati, altri criteri e codice possono accedervi estraendo il valore da queste variabili.

Valore GET da KVM

Utilizza l'attributo private. con tutte le variabili quando accedi a una KVM con GET per nascondere le informazioni KVM in una sessione di debug. Se L'attributo private. non è utilizzato, la KVM è ancora criptata. mentre la KVM le informazioni verranno decriptate nella sessione di debug e non verranno generate eccezioni.

In questo esempio, la variabile private.encryptedVar contiene il valore decriptato della console KVM Chiave foo.

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

Ora che i dati sono stati recuperati, altri criteri e codice possono accedervi estraendo il valore da quella variabile.

&lt;KeyValueMapOperations&gt;

Fornisce l'accesso basato su criteri a una mappa chiave-valore (KVM).

Sintassi

<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>KEY_NAME_LITERAL</Parameter>
      </Key>
      <Value>VALUE_LITERAL</Value>
      <Value>VALUE_LITERAL</Value>
    </Entry>
  </InitialEntries>
  <Put override="BOOLEAN">
    <Key>
       <Parameter>KEY_NAME_LITERAL</Parameter>
    </Key>
  </Put>
  <Get assignTo="VARIABLE_NAME" index="INDEX_NUMBER">
    <Key>
       <Parameter>KEY_NAME_LITERAL</Parameter>
    </Key>
  </Get>
  <Delete>
    <Key>
       <Parameter>KEY_NAME_LITERAL</Parameter>
    </Key>
  </Delete>
</KeyValueMapOperations>

Attributi <KeyValueMapOperations>

L'esempio seguente mostra gli attributi dell'elemento <KeyValueMapOperations>:

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

Nella tabella seguente vengono descritti gli attributi dei Elemento <KeyValueMapOperations>:

Attributo Descrizione Predefinito Presenza
mapIdentifier

Specifica un identificatore che indica al criterio a quale KVM deve accedere.

Se mancano entrambi questo identificatore e <MapName>, viene utilizzata una KVM denominata kvmap. Non puoi utilizzare questo attributo se specifichi l'elemento <MapName>.

N/D Facoltativo

La tabella seguente descrive gli attributi comuni a tutti gli elementi principali dei criteri:

Attributo Descrizione Predefinito Presenza
name

Il nome interno del criterio. Il valore dell'attributo name può Deve contenere lettere, numeri, spazi, trattini, trattini bassi e punti. Questo valore non può superare i 255 caratteri.

Se vuoi, utilizza l'elemento <DisplayName> per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

N/D Obbligatorio
continueOnError

Imposta il valore su false per restituire un errore quando un criterio non funziona. Si tratta di un comportamento previsto comportamento per la maggior parte dei criteri.

Imposta su true per continuare l'esecuzione del flusso anche dopo un fallimento del criterio. Vedi anche:

falso Facoltativo
enabled

Imposta su true per applicare il criterio.

Imposta false per disattivare il criterio. Il criterio non verrà applicata anche se rimane collegata a un flusso.

true Facoltativo
async

Questo attributo è stato ritirato.

falso Ritirato

&lt;DisplayName&gt; elemento

Da utilizzare in aggiunta all'attributo name per etichettare il criterio in editor proxy della UI di gestione con un nome diverso e in linguaggio naturale.

<DisplayName>Policy Display Name</DisplayName>
Predefinito

N/D

Se ometti questo elemento, il valore dell'attributo name del criterio è in uso.

Presenza Facoltativo
Tipo Stringa

Elementi secondari

Questa sezione descrive gli elementi e gli attributi del criterio KeyValueMapOperations:

<Elimina> elemento

Elimina la coppia chiave/valore specificata. Devi utilizzare almeno uno dei valori <Get>, <Put> o <Delete>.

Assicurati di specificare il nome del KVM con l'attributo mapIdentifier nell'elemento principale o con l'elemento <MapName>. Ad esempio:

<Delete>
   <Key>
      <Parameter>KEY_NAME_LITERAL</Parameter>
   </Key>
</Delete>
Predefinito N/D
Presenza Obbligatorio se <Get> o <Put> non sono presenti.
Tipo N/D

&lt;Entry&gt; elemento

I valori seed per le KVM, che vengono completati nella KVM quando è inizializzato. Per Apigee, la dimensione della chiave è limitata a 2 kB.

Ad esempio:

<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>
Predefinito N/D
Presenza Facoltativo
Tipo N/D

&lt;ExclusiveCache&gt; elemento

Deprecato. Utilizza invece l'elemento <Scope>.

Elemento <ExpiryTimeInSecs>

Specifica la durata in secondi dopo la quale Apigee aggiorna il valore memorizzato nella cache dal KVM specificato.

Un valore pari a 0 o -1 oppure l'esclusione di questo elemento significa che il valore predefinito di 300 secondi è in uso. Ad esempio:

<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
Predefinito 300 (5 minuti)
Presenza Facoltativo
Tipo Numero intero

Un KVM è un meccanismo di persistenza a lungo termine che memorizza chiavi e valori in un database NoSQL. Per questo motivo, la lettura da una KVM in fase di runtime può rallentare le prestazioni del proxy. Per migliorare le prestazioni di Apigee dispongono di un meccanismo integrato per la memorizzazione nella cache di chiavi/valori KVM in memoria durante il runtime. Questo criterio per le operazioni KVM legge sempre dalla cache per le operazioni GET.

L'elemento <ExpiryTimeInSecs> consente di controllare per quanto tempo le chiavi/i valori utilizzati nel criterio vengono memorizzati nella cache prima di essere aggiornati di nuovo dalla KVM. Tuttavia, esistono alcune differenze tra il modo in cui le operazioni GET e PUT influiscono sulla scadenza della cache.

GET - La primissima volta che viene eseguita un'operazione KVM GET, il processo dalla KVM (il cui nome è specificato nella cartella principale mapIdentifier del criterio) o l'elemento <MapName>) vengono caricati nella cache, dove rimangono per le successive operazioni di GET fino a quando si verifica quanto segue:

  • Scadenza del numero di secondi specificato in <ExpiryTimeInSecs>.
    o
  • Un'operazione PUT in un criterio KVM sovrascrive i valori esistenti (come spiegato di seguito).

PUT: un'operazione PUT scrive chiavi/valori sulla KVM specificata. Se PUT scrive in una chiave già esistente nella cache, la cache viene aggiornata immediatamente e ora contiene il nuovo valore per il numero di secondi specificato nell'elemento <ExpiryTimeInSecs> del criterio. Tuttavia, se usi PUT, la cache verrà aggiornata solo nel singolo nodo di runtime che gestisce la richiesta. Per aggiornare la cache in ogni nodo di runtime distribuito, usa l'elemento <ExpiryTimeInSecs> per specificare gli intervalli di aggiornamento per ciascun nodo.

Esempio: memorizzazione nella cache di una KVM

  1. Un'operazione GET recupera il valore di "rating" che aggiunge il valore "10" da memorizzare nella cache. La <ExpiryTimeInSecs> nel criterio è 60.
  2. 30 secondi dopo, il criterio GET viene eseguito di nuovo e recupera 10 dalla cache.
  3. 5 secondi dopo, un criterio PUT aggiorna il valore di rating in 10 e il <ExpiryTimeInSecs> nel criterio PUT ha 20. La cache viene immediatamente aggiornato con il nuovo valore, che ora è impostato per rimanere nella cache per 20 secondi. Se PUT non fosse avvenuto, la cache originariamente compilata dal primo GET esisterebbe ancora per altri 30 secondi, rimanenti dei 60 secondi originali.
  4. 15 secondi dopo, un altro GET viene eseguito e recupera un valore di 8.

Elemento <Get>

Recupera il valore per la chiave specificata. Almeno uno di <Get>, È necessario utilizzare <Put> o <Delete>.

Apigee cripta tutti i dati archiviati nella KVM. Per maggiori dettagli, vedi Informazioni sulle chiavi di crittografia. Quando utilizzi <Get>, Apigee decripta i dati archiviati e la assegna a una variabile nel contesto del messaggio. Il nome della variabile viene specificato utilizzando Attributo assignTo.

Assicurati di specificare il nome della KVM con l'attributo mapIdentifier nella o con l'elemento <MapName>.

Puoi includere più blocchi Get nel criterio per recuperare più elementi da una KVM.

Predefinito N/D
Presenza Obbligatorio se <Put> o <Delete> non sono presenti.
Tipo N/D

Attributi

Nella tabella seguente vengono descritti gli attributi del comando <Get> :

Attributo Descrizione Predefinito Presenza
assignTo

La variabile a cui deve essere assegnato il valore recuperato.

N/D Obbligatorio
index

Il numero di indice (in un indice basato su 1) dell'elemento da recuperare da una chiave a più valori. Ad esempio, se specifichi index=1, verrà restituito il primo valore e lo assegnerai a la variabile assignTo. Se non viene specificato alcun valore di indice, tutti i valori di tali voci vengono assegnate alla variabile come java.util.List.

Per un esempio, consulta la scheda Ottieni valore da KVM in Samples.

N/D Facoltativo

Ottenere un singolo articolo da un KVM

Con questa configurazione di passaggio di esempio, il criterio legge e decripta il valore di una singola chiave nel KVM e assegna il valore decriptato a una variabile denominata myvar.

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

Esclusione dei dati recuperati dalle sessioni di debug

In alcuni casi, i dati archiviati nella KVM sono sensibili. Per impedire che i dati recuperati non appaia in un Sessione di debug, utilizza il prefisso private. per il nome della variabile specificato in assignTo. Se non utilizzi il prefisso private., i dati recuperati dalla KVM verranno visualizzati in qualsiasi sessione di debug che crei.

Con questa configurazione del passaggio di esempio, il criterio legge e decripta il valore associato a una singola chiave nella KVM e lo assegna a una variabile. Il compito non verrà visualizzato in una sessione di debug.

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

Ottenere più elementi da un KVM

Nell'esempio seguente, ipotizza un KVM con le seguenti chiavi e valori. Oltre a memorizzare un elenco aggiornato dei film più popolari di tutti i tempi, il KVM memorizza il nome del regista di tutti i film più importanti.

Chiave Valore
top_movies La principessa sposa, Il Padrino, Quarto potere
Citizen Kane Orson Welles
La principessa sposa Roberto Russo
Il padrino Francis Ford Coppola

Noterai che il valore associato alla chiave top_movies contiene più Nomi di film, separati da virgole.

Con questa configurazione di esempio, il criterio recupera il filmato principale corrente e il nome del suo direttore:

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

Quando viene chiamato il proxy API, Apigee crea le seguenti variabili con valori corrispondenti, che possono essere utilizzati in un secondo momento nel flusso del proxy API:

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

Il valore di top.movie.pick è solo il primo elemento dell'elenco separato da virgole, perché il primo elemento <Get> utilizza un attributo index pari a 1. Poi, il secondo elemento <Get> utilizza il valore assegnato a top.movie.pick come chiave per recuperare un valore in movie.director.

&lt;InitialEntries&gt; elemento

Valori seed per KVM, che vengono compilati nella KVM al momento dell'inizializzazione. Assicurati di specificare il nome del KVM con l'attributo mapIdentifier nell'elemento principale.

Ad esempio:

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

Quando utilizzi questo elemento, quando salvi il criterio nella UI di Apigee su una versione di cui è stato eseguito il deployment del proxy API o esegui il deployment del bundle proxy API contenente il criterio con questo elemento, le chiavi vengono creati automaticamente sulla KVM. Se i valori nelle norme sono diversi rispetto a quelli nella KVM, questi vengono sovrascritti al momento del deployment del proxy API. Qualsiasi Vengono aggiunti nuove chiavi/valori alla KVM esistente insieme alle chiavi/valori esistenti.

Le chiavi e i valori inseriti da questo elemento devono essere letterali. Ad esempio, <Parameter ref="request.queryparam.key"> non è supportato in questo elemento.

La dimensione della chiave è limitata a 2 KB.

Predefinito N/D
Presenza Facoltativo
Tipo N/D

&lt;Key&gt; elemento

Specifica la chiave in una voce KVM. Questo elemento viene visualizzato come elemento secondario di <Get>, <Put> o <Delete> oppure come elemento secondario dell'elemento <Entry> che è un elemento secondario di <InitialEntries>. Ecco un esempio di chiave fissa:

<Key>
  <Parameter>KEY_NAME_LITERAL</Parameter>
</Key>

Una chiave può essere composita, con elementi dinamici, nel senso che più di una chiave Puoi aggiungere <Parameter> per creare la chiave. Ad esempio, i contenuti le variabili userID e role potrebbero essere combinate per creare un chiave dinamica. Di seguito è riportato un esempio di configurazione dei passaggi che specifica un'istanza composta, chiave determinata:

<Key>
  <Parameter ref='userID'/>
  <Parameter ref='role'/>
</Key>

Consulta l'elemento <Parameter> per informazioni dettagliate su come impostare il nome della chiave.

Le dimensioni della chiave sono limitate a 2 kB.

Predefinito N/D
Presenza Facoltativo
Tipo N/D

Elemento <MapName>

L'elemento <MapName> consente al criterio di identificare quale KVM utilizzare in modo dinamico in fase di runtime. La possibilità di selezionare le KVM in modo dinamico ti offre la flessibilità di progettare un criterio KeyValueMapOperations che possa accedere a diverse KVM, a seconda del contesto in cui viene eseguito.

Alcuni esempi:

<!-- use one of the following forms -->

<MapName>literal_string</MapName>

<MapName ref="flow.variable"></MapName>

<MapName ref="flow.variable">literal_string</MapName>

La prima riga specifica il nome KVM come stringa letterale. La seconda riga prende il nome da una variabile di flusso. Nella terza riga, se la variabile di flusso si risolve in un valore vuoto, viene utilizzata la stringa letterale .

Non specificare l'attributo mapIdentifier se utilizzi <MapName> nel criterio. Per ulteriori informazioni, consulta gli attributi dei criteri.

Se la mappa non esiste al momento del deployment del proxy, non verrà creata e Apigee genera un quando il criterio viene eseguito. Se viene fornita la variabile di flusso, L'elemento <InitialEntries> non è consentito. Riceverai un errore di convalida durante e deployment continuo.

<Parameter> elemento

Specifica un componente di una chiave in una coppia chiave/valore. Questo elemento specifica il nome durante la creazione, l'aggiornamento recuperare o eliminare la coppia chiave/valore.

Puoi specificare il nome utilizzando:

  • Una stringa letterale

    <Key>
      <Parameter>literal</Parameter>
    </Key>
  • Una variabile da recuperare in fase di esecuzione utilizzando l'attributo ref

    <Key>
      <Parameter ref="variable_name"/>
    </Key>
  • Una combinazione di letterali e riferimenti a variabili

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

Quando l'elemento <Key> include più elementi <Parameter>, il valore la stringa di chiave efficace è concatenazione dei valori di ogni parametro, uniti da un doppio trattino basso. Ad esempio, nell'esempio precedente, se la variabile apiproxy.name ha il valore abc1, la chiave effettiva sarà targeturl__abc1__weight.

Che tu stia recuperando, aggiornando o eliminando una voce chiave/valore, il nome della chiave deve corrispondere nome della chiave nella KVM. Per le linee guida, consulta Specificare e recuperare i nomi delle chiavi.

Predefinito N/D
Presenza Obbligatorio
Tipo Stringa

Attributi

La tabella seguente descrive gli attributi dell'elemento <Parameter>:

Attributo Descrizione Predefinito Presenza
ref Specifica il nome di una variabile il cui valore contiene il nome esatto della chiave che vuoi creare, recuperare o eliminare. N/D Obbligatorio se non viene fornito alcun valore letterale tra l'apertura e tag di chiusura.

&lt;Put&gt; elemento

Scrive una coppia chiave/valore in un KVM. Se il KVM specificato nell'attributo mapIdentifier dell'elemento principale non esiste e se l'elemento <MapName> non viene utilizzato, la mappa viene creata automaticamente. Se la mappa di valori chiave esiste già, la chiave/il valore vengono aggiunti.

Per creare una KVM utilizzando la UI o l'API, consulta:

<Put override="false">
  <Key>
    <Parameter ref="mykeyvar"/>
  </Key>
  <Value ref="myvalvar1"/>
</Put>
Predefinito N/D
Presenza Obbligatorio se <Get> o <Delete> non sono presenti.
Tipo N/D

Attributi

La tabella seguente descrive gli attributi dell'elemento <Put>:

Attributo Descrizione Predefinito Presenza
override

Se impostato su true, sostituisce il valore di una chiave.

<Put override="false"> scriverà solo se non sono presenti attualmente persistente nell'archivio KVM per quella chiave.

true Facoltativo

&lt;Scope&gt; elemento

Definisce il limite di accessibilità per le KVM. L'ambito predefinito è environment, vale a dire che, per impostazione predefinita, le voci di Maps sono condivise da tutti i proxy API in esecuzione in un ambiente (ad es. test o prod). Se imposti l'ambito su apiproxy, le voci nel campo Le KVM sono accessibili solo dal proxy API che scrive i valori nella mappa.

Tieni presente che, quando accedi a una mappa o a una voce della mappa, devi specificare lo stesso valore di ambito utilizzato al momento della creazione della mappa. Ad esempio, se la mappa è stata creata con un ambito apiproxy, devi utilizzare l'ambito apiproxy quando recuperi i relativi valori, l'inserimento di modifiche o l'eliminazione di voci.

<Scope>environment</Scope>
Predefinito environment
Presenza Facoltativo
Tipo Stringa
Valori validi
  • organization
  • environment
  • apiproxy
  • policy (revisione proxy API)

Elemento <Value>

Specifica il valore di una chiave. Puoi specificare il valore come stringa letterale o, utilizzando l'attributo ref, come variabile da recuperare in fase di esecuzione:

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

oppure:

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

Puoi anche includere più elementi <Value> per specificare un valore composto da più parti. I valori vengono combinati in fase di esecuzione.

Nell'esempio seguente, al KVM vengono aggiunte due chiavi:

  • Chiave k1 con valori v1,v2
  • Chiave k2 con valori v3,v4
<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>

Nell'esempio seguente, viene creata una chiave con due valori. Supponiamo che il nome dell'organizzazione sia foo_org, il nome del proxy API sia bar e l'ambiente sia test:

  • Chiave foo_org con valori bar,test
<Put>
  <Key>
    <Parameter ref="organization.name"/>
  </Key>
  <Value ref="apiproxy.name"/>
  <Value ref="environment.name"/>
</Put>
Predefinito N/D
Presenza Obbligatorio
Tipo Stringa

Attributi

Nella tabella seguente vengono descritti gli attributi dell'elemento <Value>:

Attributo Descrizione Predefinito Presenza
ref Specifica il nome di una variabile il cui valore contiene i valori chiave che vuoi per iniziare. N/D Obbligatorio se non viene specificato alcun valore letterale tra i tag di apertura e chiusura. Vietato se viene specificato un valore letterale.

Messaggi di errore

Questa sezione descrive i codici e i messaggi di errore restituiti e le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti per sapere se si stanno sviluppando regole di errore per la gestione degli errori. Per scoprire di più, consulta gli articoli Cosa devi sapere sugli errori relativi alle norme e Gestione degli errori.

Errori di runtime

Questi errori possono verificarsi quando il criterio viene eseguito.

Codice di errore Stato HTTP Causa Correggi
steps.keyvaluemapoperations.UnsupportedOperationException 500

Questo errore si verifica se l'attributo mapIdentifier viene impostato sulla stringa vuota nel criterio KeyValueMapOperations.

Errori di deployment

Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.

Nome errore Causa Correggi
InvalidIndex Se l'attributo index specificato nell'elemento <Get> del criterio KeyValueMapOperations è zero o un numero negativo, il deployment del proxy API non riesce. L'indice inizia da 1, pertanto un indice pari a zero o un numero intero negativo viene considerato non valido.
KeyIsMissing Questo errore si verifica se l'elemento <Key> è completamente mancante o se manca l'elemento <Parameter> all'interno dell'elemento <Key> sotto <Entry> dell'elemento <InitialEntries> del criterio KeyValueMapOperations.
ValueIsMissing Questo errore si verifica se l'elemento <Value> non è presente sotto l'elemento <Entry> dell'elemento <InitialEntries> del criterio KeyValueMapOperations.

Schemi

Note sull'utilizzo

Per una panoramica delle KVM, consulta Utilizzo delle mappe chiave-valore.

Utilizzando l'interfaccia utente di Apigee, puoi definire le KVM solo a livello di ambito dell'ambiente, come descritto in Utilizzo delle KVM con l'interfaccia utente di Apigee. Utilizzando l'API Apigee, puoi definire le KVM a livello di organizzazione, ambiente o proxy API come descritto nelle sezioni seguenti:

Un archivio KVM fornisce un meccanismo di persistenza leggero per i dati formattati come coppie chiave/valore. Puoi accedervi in fase di esecuzione tramite criteri o codice. Una mappa contiene qualsiasi nel formato key=value.

Ad esempio localhost=127.0.0.1, zip_code=94110 o first_name=felix. Nel primo esempio, localhost è una chiave e 127.0.0.1 è un valore. Ogni coppia chiave/valore viene memorizzata come voce in una chiave mappa dei valori. Un KVM può memorizzare molte voci.

Ad esempio, supponi di dover archiviare un elenco di indirizzi IP associati a vari backend ambienti cloud-native. Potresti creare un KVM denominato ipAddresses contenente un elenco di coppie chiave/valore come voci. Ad esempio, questo JSON può rappresentare una mappa di questo tipo:

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

Puoi utilizzare questa struttura per creare un repository di indirizzi IP che possono essere utilizzati dai criteri in fase di esecuzione per applicare la lista consentita/la lista vietata degli IP, per selezionare dinamicamente un indirizzo di destinazione del backend e così via. Tipicamente, il criterio KeyValueMapOperations viene utilizzato per archiviare o recuperare informazioni di lunga durata che devono essere riutilizzate in più transazioni di richiesta/risposta.

Le mappe KeyValue possono essere manipolate tramite il criterio KeyValueMapOperations o direttamente tramite l'API Apigee. Puoi utilizzare l'API, ad esempio, per caricare set di dati di grandi dimensioni nello spazio dati chiave/valore o per creare script per gestire le voci della mappa chiave/valore. Dovrai creare un KVM con l'API prima di accedervi con il criterio KeyValueMapOperations.

Specifica e recupero dei nomi delle chiavi

Con gli elementi <Parameter> e <Value>, puoi specificare un valore letterale (se il valore si trova tra i tag di apertura e chiusura) o utilizzare l'attributo ref per specificare il nome di una variabile il cui valore deve essere utilizzato al momento dell'esecuzione.

L'elemento <Parameter> merita una menzione speciale, perché determina il nome della chiave che viene creata, nonché il nome della chiave che vuoi recuperare o eliminare. Di seguito sono riportati due esempi. Il primo specifica un nome chiave in modo letterale, mentre il secondo specifica un nome chiave utilizzando una variabile. Supponiamo che per creare le chiavi in una KVM vengano utilizzati i seguenti elementi:

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

Nella prima istanza, il valore letterale di KEY_NAME_LITERAL viene archiviato nella KVM come chiave nome. Nella seconda istanza, qualsiasi valore presente nel key.name.variable diventa il nome della chiave nella KVM. Ad esempio, se key.name.variable conteneva il valore foo, la chiave si chiamerebbe foo.

Per recuperare la chiave e un valore della chiave con un'operazione GET (o rimuoverli con un'operazione DELETE), il valore dell'elemento <Parameter> deve corrispondere al nome della chiave nel KVM. Ad esempio, se il nome della chiave nella KVM è my_key, puoi specificare il valore letterale con <Parameter>my_key</Parameter> o una variabile contenente il valore esatto mny_key, come segue:<Parameter ref="variable.containing.foo"/>.

Argomenti correlati

Per ulteriori informazioni sulle KVM, consulta i seguenti argomenti: