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.

Dit artikel is van toepassing op API-versie 1.0.

Operations

  • Ophalen
  • Meerdere lijsten
  • Instellen
  • Verwijderen

Vereisten

  • Alle HTTP-aanvragen moeten worden geverifieerd. Zie de sectie verificatie .
  • Alle HTTP-aanvragen moeten expliciet api-versionbevatten. Zie de sectie versiebeheer .

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

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 If-Match of If-None-Match aanvraagheaders om de cache van clients te verbeteren. Het etag argument maakt deel uit van de sleutelweergave. Zie secties 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

of

HTTP/1.1 200 OK

Sleutelwaarden weergeven

Optioneel: key (Als dit niet is opgegeven, impliceert dit elke sleutel.) Optioneel: label (Als dit niet is opgegeven, impliceert dit elk label.)

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

Reactie:

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 aanvullende opties.

Paginering

Het resultaat wordt gepagineerd als het aantal geretourneerde items de antwoordlimiet overschrijdt. Volg de optionele Link antwoordheaders en gebruik rel="next" 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

Reactie:

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}

Ondersteunde filters

Sleutelfilter Effect
key wordt weggelaten of key=* Komt overeen met elke 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 de sleutelnamen abc of xyz (beperkt tot 5 CSV)
Labelfilter Effect
label wordt weggelaten of label=* Komt overeen met elk label
label=%00 Komt overeen met KV zonder label
label=prod Komt overeen met het labelprod
label=prod* Komt overeen met labels die beginnen met prod
label=prod,test Komt overeen met labels prod of test (beperkt tot 5 CSV)

Gereserveerde tekens

*, \, ,

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

Filtervalidatie

In het geval van een filtervalidatiefout 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

  • Alles

    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 querytekenreeksparameter en geef een door komma's gescheiden lijst met aangevraagde velden op. Als u de $select parameter weglaat, 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 zich in het verleden bevond. 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

Reactie:

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 (Indien niet opgegeven, of label=%00, impliceert dit sleutel-waarde 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, ontvangt u het volgende antwoord:

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 If-Match of If-None-Match aanvraagheaders om racevoorwaarden te voorkomen. Het etag argument maakt deel uit van de sleutelweergave. Als If-Match of If-None-Match worden weggelaten, is de bewerking onvoorwaardelijk.

Het volgende antwoord werkt de waarde alleen bij 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 representatie 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
...

of

HTTP/1.1 412 PreconditionFailed

Verwijderen

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

Reactie: Retourneer de verwijderde sleutelwaarde of geen waarde als de sleutelwaarde niet bestond.

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

of

HTTP/1.1 204 No Content

Sleutel verwijderen (voorwaardelijk)

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