Delen via


Sleutelwaarden

Een sleutelwaarde is een resource die wordt geïdentificeerd door een unieke combinatie van key + label. label is optioneel. Als u expliciet wilt verwijzen naar een sleutelwaarde zonder label, gebruikt u '\0' (URL gecodeerd als %00). Zie de details voor elke bewerking.

Operations

  • Ophalen
  • Meerdere lijsten weergeven
  • Instellen
  • Delete

Vereisten

Syntaxis

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

Sleutelwaarde ophalen

Vereist: {key}, {api-version}
Optioneel: label (Als u dit weglaat, impliceert dit een sleutelwaarde zonder label.)

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

Reacties:

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

Als de sleutel niet bestaat, wordt het volgende antwoord geretourneerd:

HTTP/1.1 404 Not Found

Ophalen (voorwaardelijk)

Gebruik of If-None-Match aanvraagheaders om de cache van If-Match clients te verbeteren. Het etag argument maakt deel uit van de sleutelweergave. Zie sectie 14.24 en 14.26 voor meer informatie.

Met de volgende aanvraag wordt de sleutelwaarde alleen opgehaald als de huidige weergave niet overeenkomt met de opgegeven etag:

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

Reacties:

HTTP/1.1 304 NotModified

or

HTTP/1.1 200 OK

Sleutelwaarden vermelden

Optioneel: key (Als dit niet is opgegeven, impliceert dit een sleutel.)

Optioneel: label (Als dit niet is opgegeven, impliceert dit een label.)

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

Antwoord:

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

Optioneel: tags (Als dit niet is opgegeven, impliceert dit tags.)

GET /kv?key=Test*&label=*&tags=tag1=value1&tags=tag2=value2&api-version={api-version} HTTP/1.1

Antwoord:

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

Zie de sectie Filteren verderop in dit artikel voor meer opties.

Sleutelwaarden vermelden (voorwaardelijk)

Gebruik of If-None-Match aanvraagheaders om de cache van If-Match clients te verbeteren. Het etag argument maakt deel uit van de hoofdtekst en koptekst van het antwoord met sleutelwaarden in de lijst. Als If-Match of If-None-Match worden weggelaten, is de bewerking onvoorwaardelijke.

Met het volgende antwoord wordt de sleutelwaarde alleen opgehaald als de huidige weergave overeenkomt met de opgegeven etag:

GET /kv?key={key}label={label}&api-version={api-version} HTTP/1.1
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"

Reacties:

HTTP/1.1 412 PreconditionFailed

or

HTTP/1.1 200 OK

Met het volgende antwoord worden de sleutelwaarden alleen opgehaald als de huidige weergave niet overeenkomt met de opgegeven etag:

GET /kv?key={key}label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"

Reacties:

HTTP/1.1 304 NotModified

or

HTTP/1.1 200 OK

Paginering

Het resultaat wordt gepagineerd als het aantal geretourneerde items de antwoordlimiet overschrijdt. Volg de optionele Link antwoordheaders en gebruik rel="next" deze voor navigatie. De inhoud biedt ook een volgende koppeling in de vorm van de @nextLink eigenschap. De gekoppelde URI bevat het api-version argument.

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

Antwoord:

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

Filteren

Een combinatie van key en label filteren wordt ondersteund. Gebruik de optionele key parameters en label queryreeksparameters.

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

Een combinatie van key, labelen tags filteren wordt ondersteund. Gebruik de optionele keyparameters en tags labelqueryreeksparameters. Er kunnen meerdere tagfilters worden opgegeven als queryreeksparameters in de tagName=tagValue indeling. Tagfilters moeten een exacte overeenkomst zijn.

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

Ondersteunde filters

Sleutelfilter Effect
key wordt weggelaten of key=* Komt overeen met een willekeurige sleutel
key=abc Komt overeen met een sleutel met de naam abc
key=abc* Komt overeen met namen van sleutels die beginnen met abc
key=abc,xyz Komt overeen met namen van sleutels abc of xyz (beperkt tot 5 CSV)
Labelfilter Effect
label wordt weggelaten of label=* Komt overeen met elk label
label=%00 Komt overeen met sleutelwaarden zonder label
label=prod Komt overeen met het label prod
label=prod* Komt overeen met labels die beginnen met prod
label=prod,test Komt overeen met labels prod of test (beperkt tot 5 CSV)
Tagsfilter Effect
tags wordt weggelaten of tags= Komt overeen met een tag
tags=group=app1 Komt overeen met sleutelwaarden met een tag met de naam group waarde app1
tags=group=app1&tags=env=prod Komt overeen met sleutelwaarden met een tag met een app1 naam group en een tag met een naam env met een waarde prod(beperkt tot 5 tagfilters)
tags=tag1=%00 Komt overeen met sleutelwaarden met een tag met de naam tag1 waarde null
tags=tag1= Komt overeen met sleutelwaarden met een tag met de naam tag1 lege waarde

Gereserveerde tekens

*, , \,

Als een gereserveerd teken deel uitmaakt van de waarde, moet deze worden ontsnapt met behulp van \{Reserved Character}. Niet-gereserveerde tekens kunnen ook worden ontsnapt.

Filtervalidatie

Als de filtervalidatie mislukt, is het antwoord HTTP 400 met foutdetails:

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
}

Voorbeelden

  • Alle

    GET /kv?api-version={api-version}
    
  • Sleutelnaam begint met abc en bevat alle labels

    GET /kv?key=abc*&label=*&api-version={api-version}
    
  • Sleutelnaam begint met abc en label is gelijk aan v1 of v2

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

Specifieke velden aanvragen

Gebruik de optionele $select queryreeksparameter en geef een door komma's gescheiden lijst met aangevraagde velden op. Als de $select parameter wordt weggelaten, bevat het antwoord de standaardset.

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

Toegang op basis van tijd

Verkrijg een weergave van het resultaat zoals het in het verleden was. Zie sectie 2.1.1 voor meer informatie. Paginering wordt nog steeds ondersteund zoals eerder in dit artikel is gedefinieerd.

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

Antwoord:

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

Sleutel instellen

  • Vereist: {key}
  • Optioneel: label (Als dit niet is opgegeven of label=%00, impliceert dit sleutelwaarde zonder label.)
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",
  }
}

Reacties:

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

Als het item is vergrendeld, wordt het volgende antwoord geretourneerd:

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
}

Sleutel instellen (voorwaardelijk)

Gebruik of If-None-Match aanvraagheaders om racevoorwaarden If-Match te voorkomen. Het etag argument maakt deel uit van de sleutelweergave. Als If-Match of If-None-Match worden weggelaten, is de bewerking onvoorwaardelijke.

In het volgende antwoord wordt de waarde alleen bijgewerkt als de huidige weergave overeenkomt met de opgegeven etag:

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

Met het volgende antwoord wordt de waarde alleen bijgewerkt als de huidige weergave niet overeenkomt met de opgegeven 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"

Met de volgende aanvraag wordt de waarde alleen toegevoegd als er al een representatie bestaat:

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

Met de volgende aanvraag wordt de waarde alleen toegevoegd als er nog geen weergave bestaat:

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

Antwoorden

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

or

HTTP/1.1 412 PreconditionFailed

Delete

  • Vereist: {key}, {api-version}
  • Optioneel: {label} (Als dit niet is opgegeven of label=%00, impliceert dit sleutelwaarde zonder label.)
DELETE /kv/{key}?label={label}&api-version={api-version} HTTP/1.1

Antwoord: Retourneer de verwijderde sleutelwaarde of geen als de sleutelwaarde niet bestond.

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

or

HTTP/1.1 204 No Content

Sleutel verwijderen (voorwaardelijk)

Dit is vergelijkbaar met de sectie 'Sleutel instellen (voorwaardelijk)' eerder in dit artikel.