Coppie chiave-valore
Un valore chiave è una risorsa identificata da una combinazione univoca di key
+ label
. label
è facoltativo. Per fare riferimento in modo esplicito a un valore chiave senza un'etichetta, usare "\0" (URL codificato come %00
). Vedere i dettagli per ogni operazione.
Operazioni
- Recupero
- Elencare più
- Set
- Elimina
Prerequisiti
- Tutte le richieste HTTP devono essere autenticate. Vedere la sezione relativa all'autenticazione.
- Tutte le richieste HTTP devono fornire esplicitamente
api-version
. Vedere la sezione relativa al controllo delle versioni.
Sintassi
{
"etag": [string],
"key": [string],
"label": [string, optional],
"content_type": [string, optional],
"value": [string],
"last_modified": [datetime ISO 8601],
"locked": [boolean],
"tags": [object with string properties, optional]
}
Ottenere chiave-valore
Obbligatorio: {key}
, {api-version}
Facoltativo: label
se omesso, implica un valore chiave senza etichetta.
GET /kv/{key}?label={label}&api-version={api-version}
Risposte:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8;
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
{
"etag": "4f6dd610dd5e4deebc7fbaef685fb903",
"key": "{key}",
"label": "{label}",
"content_type": null,
"value": "example value",
"last_modified": "2017-12-05T02:41:26+00:00",
"locked": "false",
"tags": {
"t1": "value1",
"t2": "value2"
}
}
Se la chiave non esiste, viene restituita la risposta seguente:
HTTP/1.1 404 Not Found
Get (in modo condizionale)
Per migliorare la memorizzazione nella cache del client, usare If-Match
o If-None-Match
richiedere intestazioni. L'argomento etag
fa parte della rappresentazione della chiave. Per altre informazioni, vedere le sezioni 14.24 e 14.26.
La richiesta seguente recupera il valore della chiave solo se la rappresentazione corrente non corrisponde all'oggetto specificato etag
:
GET /kv/{key}?api-version={api-version} HTTP/1.1
Accept: application/vnd.microsoft.appconfig.kv+json;
If-None-Match: "{etag}"
Risposte:
HTTP/1.1 304 NotModified
or
HTTP/1.1 200 OK
Elencare i valori chiave
Facoltativo: key
se non specificato, implica qualsiasi chiave.
Facoltativo: label
se non specificato, implica qualsiasi etichetta.
GET /kv?label=*&api-version={api-version} HTTP/1.1
Risposta:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8
Facoltativo: tags
se non specificato, implica eventuali tag.
GET /kv?key=Test*&label=*&tags=tag1=value1&tags=tag2=value2&api-version={api-version} HTTP/1.1
Risposta:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8
Per altre opzioni, vedere la sezione "Filtro" più avanti in questo articolo.
Elencare i valori chiave (in modo condizionale)
Per migliorare la memorizzazione nella cache del client, usare If-Match
o If-None-Match
richiedere intestazioni. L'argomento etag
fa parte del corpo e dell'intestazione della risposta list key-values.
Se If-Match
o If-None-Match
vengono omessi, l'operazione è incondizionato.
La risposta seguente ottiene il valore della chiave solo se la rappresentazione corrente corrisponde all'oggetto specificato etag
:
GET /kv?key={key}&label={label}&api-version={api-version} HTTP/1.1
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Risposte:
HTTP/1.1 412 PreconditionFailed
or
HTTP/1.1 200 OK
La risposta seguente ottiene i valori chiave solo se la rappresentazione corrente non corrisponde all'oggetto specificato etag
:
GET /kv?key={key}&label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Risposte:
HTTP/1.1 304 NotModified
or
HTTP/1.1 200 OK
Impaginazione
Il risultato viene impaginato se il numero di elementi restituiti supera il limite di risposta. Seguire le intestazioni di risposta facoltative Link
e usare rel="next"
per la navigazione.
In alternativa, il contenuto fornisce un collegamento successivo sotto forma di @nextLink
proprietà . L'URI collegato include l'argomento api-version
.
GET /kv?api-version={api-version} HTTP/1.1
Risposta:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvs+json; charset=utf-8
Link: <{relative uri}>; rel="next"
{
"items": [
...
],
"@nextLink": "{relative uri}"
}
Filtri
È supportata una combinazione di key
filtri e label
.
Usare i parametri facoltativi key
e label
della stringa di query.
GET /kv?key={key}&label={label}&api-version={api-version}
È supportata una combinazione di key
filtri , label
e tags
.
Usare i parametri facoltativi key
della stringa di query , label
e tags
.
È possibile specificare più filtri di tag come parametri della stringa di query nel tagName=tagValue
formato . I filtri tag devono essere una corrispondenza esatta.
GET /kv?key={key}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}
Filtri supportati
Filtro chiavi | Effetto |
---|---|
key è omesso oppure key=* |
Trova la corrispondenza con qualsiasi chiave |
key=abc |
Corrisponde a una chiave denominata abc |
key=abc* |
Corrisponde ai nomi delle chiavi che iniziano con abc |
key=abc,xyz |
Trova la corrispondenza con i nomi delle chiavi abc o xyz (limitato a 5 CSV) |
Filtro etichette | Effetto |
---|---|
label è omesso oppure label=* |
Corrisponde a qualsiasi etichetta |
label=%00 |
Trova la corrispondenza con i valori chiave senza etichetta |
label=prod |
Corrisponde all'etichetta prod |
label=prod* |
Corrisponde alle etichette che iniziano con prod |
label=prod,test |
Corrisponde all'elemento prod o al test delle etichette (limitato a 5 CSV) |
Filtro tag | Effetto |
---|---|
tags è omesso oppure tags= |
Corrisponde a qualsiasi tag |
tags=group=app1 |
Trova la corrispondenza con i valori chiave con un tag denominato group con valore app1 |
tags=group=app1&tags=env=prod |
Trova la corrispondenza con i valori chiave con un tag denominato group con valore app1 e un tag denominato env con valore prod (limitato a 5 filtri tag) |
tags=tag1=%00 |
Trova la corrispondenza con i valori chiave con un tag denominato tag1 con valore null |
tags=tag1= |
Trova la corrispondenza con i valori chiave con un tag denominato tag1 con valore vuoto |
Caratteri riservati
*
, \
, ,
Se un carattere riservato fa parte del valore , deve essere preceduto da un carattere di escape tramite \{Reserved Character}
. I caratteri non riservati possono anche essere preceduti da caratteri di escape.
Convalida dei filtri
Se la convalida del filtro non riesce, la risposta è HTTP 400
con i dettagli dell'errore:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json; charset=utf-8
{
"type": "https://azconfig.io/errors/invalid-argument",
"title": "Invalid request parameter '{filter}'",
"name": "{filter}",
"detail": "{filter}(2): Invalid character",
"status": 400
}
Esempi
Tutte le date
GET /kv?api-version={api-version}
Il nome della chiave inizia con abc e include tutte le etichette
GET /kv?key=abc*&label=*&api-version={api-version}
Il nome della chiave inizia con abc e label è uguale a v1 o v2
GET /kv?key=abc*&label=v1,v2&api-version={api-version}
Richiedi campi specifici
Usare il parametro facoltativo $select
della stringa di query e specificare un elenco delimitato da virgole di campi richiesti. Se il $select
parametro viene omesso, la risposta contiene il set predefinito.
GET /kv?$select=key,value&api-version={api-version} HTTP/1.1
Accesso basato sul tempo
Ottenere una rappresentazione del risultato come in passato. Per altre informazioni, vedere la sezione 2.1.1. La paginazione è ancora supportata come definito in precedenza in questo articolo.
GET /kv?api-version={api-version} HTTP/1.1
Accept-Datetime: Sat, 12 May 2018 02:10:00 GMT
Risposta:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json"
Memento-Datetime: Sat, 12 May 2018 02:10:00 GMT
Link: <{relative uri}>; rel="original"
{
"items": [
....
]
}
Impostare la chiave
- Obbligatorio:
{key}
- Facoltativo:
label
se non specificato o label=%00, implica un valore chiave senza etichetta.
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
{
"value": "example value", // optional
"content_type": "user defined", // optional
"tags": { // optional
"tag1": "value1",
"tag2": "value2",
}
}
Risposte:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
{
"etag": "4f6dd610dd5e4deebc7fbaef685fb903",
"key": "{key}",
"label": "{label}",
"content_type": "user defined",
"value": "example value",
"last_modified": "2017-12-05T02:41:26.4874615+00:00",
"tags": {
"tag1": "value1",
"tag2": "value2",
}
}
Se l'elemento è bloccato, viene restituita la risposta seguente:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset="utf-8"
{
"type": "https://azconfig.io/errors/key-locked",
"title": "Modifing key '{key}' is not allowed",
"name": "{key}",
"detail": "The key is read-only. To allow modification unlock it first.",
"status": 409
}
Impostare la chiave (in modo condizionale)
Per evitare race condition, usare If-Match
o If-None-Match
richiedere intestazioni. L'argomento etag
fa parte della rappresentazione della chiave.
Se If-Match
o If-None-Match
vengono omessi, l'operazione è incondizionato.
La risposta seguente aggiorna il valore solo se la rappresentazione corrente corrisponde all'oggetto specificato etag
:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
La risposta seguente aggiorna il valore solo se la rappresentazione corrente non corrisponde all'oggetto specificato etag
:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json;
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
La richiesta seguente aggiunge il valore solo se esiste già una rappresentazione:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json;
If-Match: "*"
La richiesta seguente aggiunge il valore solo se non esiste già una rappresentazione:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-None-Match: "*"
Risposte
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...
or
HTTP/1.1 412 PreconditionFailed
Elimina
- Obbligatorio:
{key}
,{api-version}
- Facoltativo:
{label}
se non specificato o label=%00, implica un valore chiave senza etichetta.
DELETE /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Risposta: restituisce il valore chiave eliminato o nessuno se il valore chiave non esiste.
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...
or
HTTP/1.1 204 No Content
Elimina chiave (in modo condizionale)
Questa operazione è simile alla sezione "Impostare la chiave (in modo condizionale)" più indietro in questo articolo.