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
- Alle HTTP-aanvragen moeten worden geverifieerd. Zie de sectie Verificatie .
- Alle HTTP-aanvragen moeten expliciet
api-version
worden opgegeven. Zie de sectie versiebeheer .
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
, label
en tags
filteren wordt ondersteund.
Gebruik de optionele key
parameters en tags
label
queryreeksparameters.
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.