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-version
bevatten. 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.