Sdílet prostřednictvím


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

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, labela tags filtrování. Použijte volitelné keylabeltags 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.