Dela via


Nyckelvärden

Ett nyckelvärde är en resurs som identifieras med en unik kombination av key + label. label är valfritt. Om du uttryckligen vill referera till ett nyckelvärde utan etikett använder du "\0" (URL-kodad som %00). Se information för varje åtgärd.

Den här artikeln gäller FÖR API version 1.0.

Operations

  • Hämta
  • Lista flera
  • Ange
  • Ta bort

Förutsättningar

Syntax

{
  "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]
}

Hämta nyckelvärde

Krävs: {key}, {api-version}
Valfritt: label (Om det utelämnas innebär det ett nyckelvärde utan etikett.)

GET /kv/{key}?label={label}&api-version={api-version}

Svaren:

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

Om nyckeln inte finns returneras följande svar:

HTTP/1.1 404 Not Found

Hämta (villkorsstyrt)

För att förbättra klientcachelagring använder If-Match du eller If-None-Match begär rubriker. Argumentet etag är en del av nyckelrepresentationen. Mer information finns i avsnitten 14.24 och 14.26.

Följande begäran hämtar endast nyckelvärdet om den aktuella representationen inte matchar den angivna etag:

GET /kv/{key}?api-version={api-version} HTTP/1.1
Accept: application/vnd.microsoft.appconfig.kv+json;
If-None-Match: "{etag}"

Svaren:

HTTP/1.1 304 NotModified

eller

HTTP/1.1 200 OK

Lista nyckelvärden

Valfritt: key (Om det inte anges innebär det någon nyckel.) Valfritt: label (Om det inte anges innebär det någon etikett.)

GET /kv?label=*&api-version={api-version} HTTP/1.1

Svar:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8

Fler alternativ finns i avsnittet "Filtrering" senare i den här artikeln.

Sidnumrering

Resultatet är sidnumrerat om antalet returnerade objekt överskrider svarsgränsen. Följ de valfria Link svarshuvudena och använd rel="next" för navigering. Alternativt tillhandahåller innehållet en nästa länk i form av @nextLink egenskapen . Den länkade URI:n api-version innehåller argumentet .

GET /kv?api-version={api-version} HTTP/1.1

Svar:

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

Filtrering

En kombination av key och label filtrering stöds. Använd parametrarna för valfria key strängar och label frågesträngar.

GET /kv?key={key}&label={label}&api-version={api-version}

Filter som stöds

Nyckelfilter Effekt
key utelämnas eller key=* Matchar valfri nyckel
key=abc Matchar en nyckel med namnet abc
key=abc* Matchar nyckelnamn som börjar med abc
key=abc,xyz Matchar nycklarnas namn abc eller xyz (begränsat till 5 CSV)
Etikettfilter Effekt
label utelämnas eller label=* Matchar valfri etikett
label=%00 Matchar KV utan etikett
label=prod Matchar etikettprod
label=prod* Matchar etiketter som börjar med prod
label=prod,test Matchar etiketter prod eller test (begränsat till 5 CSV)

Reserverade tecken

*, \, ,

Om ett reserverat tecken är en del av värdet måste det inte användas med hjälp \{Reserved Character}av . Icke-reserverade tecken kan också undantagas.

Filtervalidering

När det gäller ett filterverifieringsfel är svaret HTTP 400 med felinformation:

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
}

Exempel

  • Alla

    GET /kv?api-version={api-version}
    
  • Nyckelnamnet börjar med abc och innehåller alla etiketter

    GET /kv?key=abc*&label=*&api-version={api-version}
    
  • Nyckelnamnet börjar med abc och etiketten är lika med v1 eller v2

    GET /kv?key=abc*&label=v1,v2&api-version={api-version}
    

Begär specifika fält

Använd den valfria frågesträngsparametern $select och ange en kommaavgränsad lista över begärda fält. Om parametern $select utelämnas innehåller svaret standarduppsättningen.

GET /kv?$select=key,value&api-version={api-version} HTTP/1.1

Tidsbaserad åtkomst

Hämta en representation av resultatet som det var vid en tidigare tidpunkt. Mer information finns i avsnitt 2.1.1. Sidnumrering stöds fortfarande enligt definitionen tidigare i den här artikeln.

GET /kv?api-version={api-version} HTTP/1.1
Accept-Datetime: Sat, 12 May 2018 02:10:00 GMT

Svar:

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": [
        ....
    ]
}

Ange nyckel

  • Krävs: {key}
  • Valfritt: label (Om det inte anges, eller label=%00, innebär det nyckelvärde utan etikett.)
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",
  }
}

Svaren:

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",
  }
}

Om objektet är låst får du följande svar:

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
}

Ange nyckel (villkorsstyrt)

För att förhindra konkurrensvillkor använder If-Match du eller If-None-Match begär rubriker. Argumentet etag är en del av nyckelrepresentationen. Om If-Match eller If-None-Match utelämnas är åtgärden ovillkorlig.

Följande svar uppdaterar endast värdet om den aktuella representationen matchar den angivna etag:

PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"

Följande svar uppdaterar endast värdet om den aktuella representationen inte matchar den angivna 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"

Följande begäran lägger bara till värdet om det redan finns en representation:

PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json;
If-Match: "*"

Följande begäran lägger bara till värdet om det inte redan finns någon representation:

PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-None-Match: "*"

Svar

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...

eller

HTTP/1.1 412 PreconditionFailed

Ta bort

  • Krävs: {key}, {api-version}
  • Valfritt: {label} (Om det inte anges, eller label=%00, innebär det nyckelvärde utan etikett.)
DELETE /kv/{key}?label={label}&api-version={api-version} HTTP/1.1

Svar: Returnera det borttagna nyckelvärdet, eller inget om nyckelvärdet inte fanns.

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...

eller

HTTP/1.1 204 No Content

Ta bort nyckel (villkorsstyrt)

Detta liknar avsnittet "Ange nyckel (villkorligt)" tidigare i den här artikeln.