Páry klíč-hodnota
Klíč-hodnota je prostředek identifikovaný jedinečnou kombinací key
+ label
. label
je volitelné. Pokud chcete explicitně odkazovat na hodnotu klíče bez popisku, použijte "\0" (adresa URL zakódovaná jako %00
). Podívejte se na podrobnosti o jednotlivých operacích.
Operace
- Získat
- Vypsat více
- Nastavit
- Odstranění
Požadavky
- Všechny požadavky HTTP musí být ověřeny. Viz část ověřování.
- Všechny požadavky HTTP musí poskytovat explicitní
api-version
. Viz část správa verzí.
Syntaxe
{
"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]
}
Získání hodnoty klíče
Povinné: {key}
, {api-version}
Volitelné: label
(Pokud je vynecháno, znamená to hodnotu klíče bez popisku.)
GET /kv/{key}?label={label}&api-version={api-version}
Odpovědi:
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"
}
}
Pokud klíč neexistuje, vrátí se následující odpověď:
HTTP/1.1 404 Not Found
Získání (podmíněně)
Pokud chcete zlepšit ukládání do mezipaměti klienta, použijte hlavičky požadavků nebo If-None-Match
je použijteIf-Match
. Argument etag
je součástí klíčové reprezentace. Další informace najdete v částech 14.24 a 14.26.
Následující požadavek načte hodnotu klíče pouze v případě, že aktuální reprezentace neodpovídá zadanému etag
:
GET /kv/{key}?api-version={api-version} HTTP/1.1
Accept: application/vnd.microsoft.appconfig.kv+json;
If-None-Match: "{etag}"
Odpovědi:
HTTP/1.1 304 NotModified
nebo
HTTP/1.1 200 OK
Výpis hodnot klíč-hodnota
Volitelné: key
(Pokud není zadáno, znamená to jakýkoli klíč.)
Volitelné: label
(Pokud není zadáno, znamená to jakýkoli popisek.)
GET /kv?label=*&api-version={api-version} HTTP/1.1
Odpověď:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8
Volitelné: tags
(Pokud není zadáno, znamená to všechny značky.)
GET /kv?key=Test*&label=*&tags=tag1=value1&tags=tag2=value2&api-version={api-version} HTTP/1.1
Odpověď:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8
Další možnosti najdete v části Filtrování dále v tomto článku.
Výpis hodnot klíčů (podmíněně)
Pokud chcete zlepšit ukládání do mezipaměti klienta, použijte hlavičky požadavků nebo If-None-Match
je použijteIf-Match
. Argument etag
je součástí textu odpovědi a hlavičky seznamu klíč-hodnoty.
Pokud If-Match
je operace vynechána nebo If-None-Match
je vynechána, je nepodmíněná.
Následující odpověď získá hodnotu klíče pouze v případě, že aktuální reprezentace odpovídá zadanému etag
:
GET /kv?key={key}&label={label}&api-version={api-version} HTTP/1.1
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Odpovědi:
HTTP/1.1 412 PreconditionFailed
nebo
HTTP/1.1 200 OK
Následující odpověď získá hodnoty klíče pouze v případě, že aktuální reprezentace neodpovídá zadanému etag
:
GET /kv?key={key}&label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Odpovědi:
HTTP/1.1 304 NotModified
nebo
HTTP/1.1 200 OK
Stránkování
Výsledek se stránkuje, pokud počet vrácených položek překročí limit odpovědi. Postupujte podle volitelných Link
hlaviček odpovědí a použijte rel="next"
k navigaci.
Obsah také poskytuje další odkaz ve formě @nextLink
vlastnosti. Propojený identifikátor URI obsahuje api-version
argument.
GET /kv?api-version={api-version} HTTP/1.1
Odpověď:
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}"
}
Filtrování
Podporuje se kombinace key
a label
filtrování.
Použijte volitelné key
parametry řetězce dotazu a label
parametry řetězce dotazu.
GET /kv?key={key}&label={label}&api-version={api-version}
Podporuje se kombinace funkce key
, label
a tags
filtrování.
Použijte volitelné key
label
tags
parametry a parametry řetězce dotazu.
Jako parametry řetězce dotazu ve tagName=tagValue
formátu je možné zadat více filtrů značek. Filtry značek musí být přesné shody.
GET /kv?key={key}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}
Podporované filtry
Filtr klíčů | Účinnost |
---|---|
key je vynechán nebo key=* |
Odpovídá libovolnému klíči. |
key=abc |
Odpovídá klíči s názvem abc. |
key=abc* |
Odpovídá názvům klíčů, které začínají na abc. |
key=abc,xyz |
Odpovídá názvům klíčů abc nebo xyz (omezeno na 5 CSV) |
Filtr popisků | Účinnost |
---|---|
label je vynechán nebo label=* |
Odpovídá jakémukoli popisku. |
label=%00 |
Odpovídá hodnotám klíče bez popisku. |
label=prod |
Odpovídá popisku s popiskem . |
label=prod* |
Odpovídá popiskům, které začínají s prod. |
label=prod,test |
Odpovídá popiskům prod nebo testování (omezeno na 5 CSV) |
Filtr značek | Účinnost |
---|---|
tags je vynechán nebo tags= |
Odpovídá libovolné značce. |
tags=group=app1 |
Odpovídá hodnotám klíče, které mají značku s názvem group hodnota. app1 |
tags=group=app1&tags=env=prod |
Odpovídá hodnotám klíče, které mají značku s názvem group value app1 a značku s názvem env s hodnotou prod (omezeno na 5 filtrů značek). |
tags=tag1=%00 |
Odpovídá hodnotám klíče, které mají značku s názvem tag1 hodnota. null |
tags=tag1= |
Odpovídá hodnotám klíče, které mají značku s tag1 prázdnou hodnotou. |
Rezervované znaky
*
, , \
,
Pokud je vyhrazený znak součástí hodnoty, musí být řídicí znak pomocí .\{Reserved Character}
Neplacené znaky mohou být také řídicí znaky.
Ověření filtru
Pokud se ověření filtru nezdaří, odpověď je HTTP 400
s podrobnostmi o chybě:
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
}
Příklady
Všechny
GET /kv?api-version={api-version}
Název klíče začíná řetězcem abc a obsahuje všechny popisky.
GET /kv?key=abc*&label=*&api-version={api-version}
Název klíče začíná řetězcem a popiskem se rovná v1 nebo v2.
GET /kv?key=abc*&label=v1,v2&api-version={api-version}
Zadání konkrétních polí
Použijte volitelný $select
parametr řetězce dotazu a zadejte čárkami oddělený seznam požadovaných polí. $select
Pokud parametr vynecháte, odpověď obsahuje výchozí sadu.
GET /kv?$select=key,value&api-version={api-version} HTTP/1.1
Přístup na základě času
Získá reprezentaci výsledku, protože byl v minulosti. Další informace najdete v části 2.1.1. Stránkování je stále podporováno, jak je definováno dříve v tomto článku.
GET /kv?api-version={api-version} HTTP/1.1
Accept-Datetime: Sat, 12 May 2018 02:10:00 GMT
Odpověď:
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": [
....
]
}
Nastavit klíč
- Požadovaný:
{key}
- Volitelné:
label
(Pokud není zadáno nebo popisek=%00, znamená to hodnotu klíče bez popisku.)
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",
}
}
Odpovědi:
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",
}
}
Pokud je položka uzamčená, vrátí se následující odpověď:
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
}
Nastavení klíče (podmíněně)
Pokud chcete zabránit podmínkám časování, použijte If-Match
hlavičky požadavků nebo If-None-Match
jejich hlavičky. Argument etag
je součástí klíčové reprezentace.
Pokud If-Match
je operace vynechána nebo If-None-Match
je vynechána, je nepodmíněná.
Následující odpověď aktualizuje hodnotu pouze v případě, že aktuální reprezentace odpovídá zadanému etag
:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Následující odpověď aktualizuje hodnotu pouze v případě, že aktuální reprezentace neodpovídá zadanému 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"
Následující požadavek přidá hodnotu pouze v případě, že již existuje reprezentace:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json;
If-Match: "*"
Následující požadavek přidá hodnotu pouze v případě, že reprezentace ještě neexistuje:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-None-Match: "*"
Odezvy
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...
nebo
HTTP/1.1 412 PreconditionFailed
Odstranění
- Povinné:
{key}
,{api-version}
- Volitelné:
{label}
(Pokud není zadáno nebo popisek=%00, znamená to hodnotu klíče bez popisku.)
DELETE /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Odpověď: Vrátí odstraněnou hodnotu klíče nebo žádnou, pokud hodnota klíče neexistuje.
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...
nebo
HTTP/1.1 204 No Content
Odstranění klíče (podmíněně)
Podobá se části Nastavit klíč (podmíněně) dříve v tomto článku.