Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
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 di alto livello 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
GET
la chiave nell'esempio successivo, specifichi un numero di indice
per recuperare il valore che ti interessa.
<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 la KVM nell'interfaccia utente di gestione in API > Configurazione dell'ambiente > Mappe di valori chiave. Le KVM
mostrate in quella pagina hanno tutte come ambito l'ambiente selezionato.
GET 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
denominata 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>
Accedere a un KVM in modo dinamico
Questo criterio utilizza l'elemento <MapName>
per fare riferimento a un KVM in modo dinamico con
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 una KVM denominata 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 memorizzati 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 come 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 rimarrà finché non verrà eliminata. Le voci dello store chiave/valore vengono distribuite tra le istanze 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 della mappa KVM, ad esempio quella descritta nella scheda
KeyValueMapOperations PUT
, configura un criterio per GET
la mappa 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 della variabile
urlencoding.requesturl.hashed
è
ed24e12820f2f900ae383b7cc4f2b31c402db1be
, la variabile personalizzata denominata
urlencoding.shorturl
verrà impostata 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 il comando
GET
per nascondere le informazioni della KVM in una sessione di debug. Se l'attributo
private.
non viene utilizzato, la KVM è comunque criptata; tuttavia, le informazioni sulla KVM
verranno visualizzate decriptate nella sessione di debug e non verrà lanciata alcuna eccezione.
In questo esempio, la variabile
private.encryptedVar
contiene il valore decriptato della chiave
foo
del KVM.
<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.
<KeyValueMapOperations>
Fornisce l'accesso basato su criteri a una mappa di valori chiave (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">
La tabella seguente descrive gli attributi dell'elemento
<KeyValueMapOperations>
:
Attributo | Descrizione | Predefinito | Presenza |
---|---|---|---|
mapIdentifier |
Specifica un identificatore che indica al criterio a quale KVM deve accedere. Se mancano sia questo identificatore sia |
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 Se vuoi, utilizza l'elemento |
N/D | Obbligatorio |
continueOnError |
Imposta su Imposta su |
falso | Facoltativo |
enabled |
Imposta su Imposta |
true | Facoltativo |
async |
Questo attributo è stato ritirato. |
falso | Ritirato |
Elemento <DisplayName>
Da utilizzare insieme all'attributo name
per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.
<DisplayName>Policy Display Name</DisplayName>
Predefinito |
N/D Se ometti questo elemento, viene utilizzato il valore dell'attributo |
---|---|
Presenza | Facoltativo |
Tipo | Stringa |
Elementi secondari
Questa sezione descrive gli elementi e gli attributi del criterio KeyValueMapOperations:
Elemento <Delete>
Consente di eliminare la coppia chiave/valore specificata. Deve essere utilizzato 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 |
Elemento <Entry>
Valori iniziali per le KVM, che vengono inseriti nella KVM al momento dell'inizializzazione. 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 |
Elemento <ExclusiveCache>
Deprecato. Utilizza invece l'elemento <Scope>
.
Elemento <ExpiryTimeInSecs>
Specifica la durata in secondi dopo la quale Apigee aggiorna il valore memorizzato nella cache dalla KVM specificata.
Un valore pari a 0 o -1 oppure l'esclusione di questo elemento indica che viene utilizzato il valore predefinito di 300 secondi. 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 un KVM in fase di runtime può potenzialmente rallentare le prestazioni del proxy. Per migliorare le prestazioni, Apigee dispone di un meccanismo integrato per memorizzare nella cache le chiavi/i valori KVM in memoria durante l'esecuzione.
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 prima volta che viene eseguita un'operazione GET
KVM, le chiavi/i valori richiesti dal KVM (il cui nome è specificato nell'attributo mapIdentifier
principale del criterio o nell'elemento <MapName>
) vengono caricati nella cache, dove rimangono per le operazioni GET
successive finché non si verifica una delle seguenti condizioni:
- Scade il numero di secondi specificato in
<ExpiryTimeInSecs>
.
oppure - Un'operazione
PUT
in un criterio KVM sovrascrive i valori esistenti (come spiegato di seguito).
PUT
: un'operazione PUT
scrive chiavi/valori nella 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, l'utilizzo di PUT
aggiorna la cache solo nel singolo nodo di runtime che gestisce la richiesta. Per aggiornare la cache in ogni nodo di runtime distribuito,
utilizza l'elemento <ExpiryTimeInSecs>
per specificare gli intervalli di aggiornamento per ogni nodo.
Esempio: memorizzazione nella cache di un KVM
- Un'operazione
GET
recupera il valore di "rating", che aggiunge il valore "10" alla cache. Il valore di<ExpiryTimeInSecs>
nel criterio è 60. - 30 secondi dopo, il criterio
GET
viene eseguito di nuovo e recupera10
dalla cache. - 5 secondi dopo, un criterio
PUT
aggiorna il valore dirating
in10
e il valore di<ExpiryTimeInSecs>
nel criterioPUT
è 20. La cache viene aggiornata immediatamente con il nuovo valore, che ora è impostato per rimanere in cache per 20 secondi. SePUT
non fosse avvenuto, la cache originariamente compilata dal primoGET
esisterebbe ancora per altri 30 secondi, rimanenti dei 60 secondi originali. - 15 secondi dopo, un altro
GET
viene eseguito e recupera un valore di8
.
Elemento <Get>
Recupera il valore per la chiave specificata. Deve essere utilizzato almeno uno dei valori <Get>
,
<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
lo assegna a una variabile nel contesto del messaggio. Il nome della variabile viene specificato utilizzando l'attributo
assignTo
.
Assicurati di specificare il nome del KVM con l'attributo mapIdentifier
sull'elemento radice 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
La tabella seguente descrive gli attributi dell'elemento <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 con più valori.
Ad esempio, se specifichi 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 esempio del passaggio, il criterio legge e decripta il valore di una singola chiave
nella 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 la visualizzazione dei dati recuperati in una sessione di debug, utilizza il prefisso private.
per il nome della variabile specificato nell'attributo assignTo
. Se non utilizzi il prefisso private.
, i dati recuperati dalla KVM verranno visualizzati in testo normale in qualsiasi sessione di debug creata.
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 | Rob Reiner |
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 film più visto al momento e il nome del regista:
<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 i valori corrispondenti, che possono essere utilizzate 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
.
Elemento <InitialEntries>
Valori iniziali per le KVM, che vengono inseriti 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 nell'interfaccia utente di Apigee su una versione di proxy API di cui è stato eseguito il deployment o esegui il deployment del bundle del proxy API contenente il criterio con questo elemento, le chiavi vengono create automaticamente nella KVM. Se i valori nel criterio sono diversi da quelli nel KVM, questi ultimi vengono sovrascritti quando viene implementato il proxy API. Eventuali nuove chiavi/valori vengono aggiunte al KVM esistente insieme alle chiavi/ai 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 |
Elemento <Key>
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 composta, con elementi dinamici, il che significa che è possibile aggiungere più di un <Parameter>
per creare la chiave. Ad esempio, i contenuti delle variabili userID
e role
potrebbero essere combinati per creare una chiave dinamica. Ecco un esempio di configurazione del passaggio che specifica una chiave composta e determinata dinamicamente:
<Key> <Parameter ref='userID'/> <Parameter ref='role'/> </Key>
Consulta l'elemento <Parameter>
per informazioni dettagliate su come impostare il nome della chiave.
La dimensione della chiave è limitata 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 esecuzione.
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.
Ecco 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 ottiene il nome da una variabile di flusso. Nella terza riga, se la variabile di flusso restituisce un valore vuoto, viene utilizzata la stringa letterale.
Non specificare l'attributo mapIdentifier
se utilizzi
<MapName>
nel criterio. Per saperne di più, consulta gli attributi delle norme.
Se la mappa non esiste al momento del deployment del proxy, non verrà creata e Apigee genera un errore di runtime durante l'esecuzione del criterio. Se viene fornita la variabile di flusso, l'elemento <InitialEntries>
non è consentito. Verrà visualizzato un errore di convalida durante il deployment.
Elemento <Parameter>
Specifica un componente di una chiave in una coppia chiave/valore. Questo elemento specifica il nome durante la creazione, l'aggiornamento, il recupero o l'eliminazione della 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>
, la stringa della chiave effettiva è la concatenazione dei valori di ciascun parametro, uniti con 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
.
Indipendentemente dal fatto che tu stia recuperando, aggiornando o eliminando una voce chiave/valore, il nome della chiave deve corrispondere al nome della chiave nel 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 specificato alcun valore letterale tra i tag di apertura e chiusura. |
Elemento <Put>
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 un KVM utilizzando la UI o l'API, consulta:
- Utilizzo delle KVM con l'interfaccia utente di Apigee per creare KVM con ambito dell'ambiente criptate nell'interfaccia utente
- API Mappe di valori chiave basate sull'organizzazione
- API di mappe di valori chiave basate sull'ambiente
- API Mappe di valori delle chiavi basate su proxy API
<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 |
Facoltativo |
Elemento <Scope>
Definisce il confine di accessibilità per le KVM. L'ambito predefinito è environment
,
il che significa che, per impostazione predefinita, le voci delle mappe sono condivise da tutti i proxy API in esecuzione in un ambiente
(ad esempio test o prod). Se imposti l'ambito su apiproxy
, le voci della 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 di
apiproxy
, devi utilizzare l'ambito apiproxy
per recuperare i relativi valori,
apportare modifiche o eliminare le voci.
<Scope>environment</Scope>
Predefinito | environment |
---|---|
Presenza | Facoltativo |
Tipo | Stringa |
Valori validi |
|
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.
Nel seguente esempio, al KVM vengono aggiunte due chiavi:
- Chiave
k1
con valoriv1,v2
- Chiave
k2
con valoriv3,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 valoribar,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
La tabella seguente descrive gli attributi dell'elemento <Value>
:
Attributo | Descrizione | Predefinito | Presenza |
---|---|---|---|
ref |
Specifica il nome di una variabile il cui valore contiene i valori chiave da impostare. | 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 di errore e i messaggi di errore restituiti e le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti se stai sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta Cosa devi sapere sugli errori relativi alle norme e Gestione dei guasti.
Errori di runtime
Questi errori possono verificarsi durante l'esecuzione del criterio.
Codice guasto | Stato HTTP | Causa | Correggi |
---|---|---|---|
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
Questo errore si verifica se l'attributo |
build |
Errori di deployment
Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.
Nome dell'errore | Causa | Correggi |
---|---|---|
InvalidIndex |
Se l'attributo index specificato nell'elemento <Get> del criterio KeyValueMapOperations è uguale a zero o a un numero negativo, il deployment del proxy API non va a buon fine. L'indice inizia da
1 , pertanto un indice pari a zero o a un numero intero negativo è considerato non valido.
|
build |
KeyIsMissing |
Questo errore si verifica se l'elemento <Key> non è presente o se l'elemento <Parameter> è
mancante all'interno dell'elemento <Key> sotto <Entry> dell'elemento <InitialEntries>
del criterio KeyValueMapOperations .
|
build |
ValueIsMissing |
Questo errore si verifica se l'elemento <Value> non è presente sotto l'elemento <Entry> dell'elemento <InitialEntries> del criterio KeyValueMapOperations . |
build |
Schemi
Note sull'utilizzo
Per una panoramica delle mappe chiave-valore, vedi Utilizzare le 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 nell'ambito dell'organizzazione, dell'ambiente o del proxy API, come descritto nelle seguenti sezioni:
- API Mappe di valori chiave basate sull'organizzazione
- API di mappe di valori chiave basate sull'ambiente
- API Mappe di valori delle chiavi basate su proxy API
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 dato arbitrario 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 archiviata come voce in una mappa di valori chiave. Un KVM può memorizzare molte voci.
Ad esempio, supponiamo che tu debba memorizzare un elenco di indirizzi IP associati a vari ambienti di backend. 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. In genere, il criterio KeyValueMapOperations viene utilizzato per memorizzare 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 memorizzato nel KVM come nome della chiave. Nella seconda istanza, qualsiasi valore in 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 nel 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:
- Utilizzare le mappe chiave-valore
- API Mappe di valori chiave basate sull'organizzazione
- API di mappe di valori chiave basate sull'ambiente
- API Mappe di valori delle chiavi basate su proxy API