Anahtar değerler
Anahtar-değer, benzersiz bileşimi tarafından tanımlanan bir kaynaktır key
+ label
. label
isteğe bağlıdır. Etiket içermeyen bir anahtar-değere açıkça başvurmak için "\0" (URL olarak %00
kodlanmış) kullanın. Her işlemin ayrıntılarına bakın.
Operations
- Al
- Birden çok listele
- Ayarla
- Sil
Önkoşullar
- Tüm HTTP isteklerinin kimliği doğrulanmalıdır. Kimlik doğrulama bölümüne bakın.
- Tüm HTTP istekleri açık
api-version
sağlamalıdır. Sürüm oluşturma bölümüne bakın.
Sözdizimi
{
"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]
}
Anahtar-değer alma
Gerekli: {key}
, {api-version}
İsteğe bağlı: label
(Atlanırsa, etiketsiz bir anahtar-değer anlamına gelir.)
GET /kv/{key}?label={label}&api-version={api-version}
Yanıt:
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"
}
}
Anahtar yoksa aşağıdaki yanıt döndürülür:
HTTP/1.1 404 Not Found
Get (koşullu)
İstemci önbelleğini geliştirmek için üst bilgileri kullanın If-Match
veya If-None-Match
isteyin. etag
bağımsız değişkeni, anahtar gösteriminin bir parçasıdır. Daha fazla bilgi için 14.24 ve 14.26 bölümlerine bakın.
Aşağıdaki istek anahtar-değeri yalnızca geçerli gösterim belirtilen etag
ile eşleşmiyorsa alır:
GET /kv/{key}?api-version={api-version} HTTP/1.1
Accept: application/vnd.microsoft.appconfig.kv+json;
If-None-Match: "{etag}"
Yanıt:
HTTP/1.1 304 NotModified
veya
HTTP/1.1 200 OK
Anahtar-değerleri listeleme
İsteğe bağlı: key
(Belirtilmezse herhangi bir anahtar anlamına gelir.)
İsteğe bağlı: label
(Belirtilmezse herhangi bir etiket anlamına gelir.)
GET /kv?label=*&api-version={api-version} HTTP/1.1
Yanıt:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8
İsteğe bağlı: tags
(Belirtilmezse, herhangi bir etiket anlamına gelir.)
GET /kv?key=Test*&label=*&tags=tag1=value1&tags=tag2=value2&api-version={api-version} HTTP/1.1
Yanıt:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8
Diğer seçenekler için bu makalenin devamında yer alan "Filtreleme" bölümüne bakın.
Anahtar-değerleri listeleme (koşullu olarak)
İstemci önbelleğini geliştirmek için üst bilgileri kullanın If-Match
veya If-None-Match
isteyin. etag
bağımsız değişkeni, liste anahtar-değerleri yanıt gövdesinin ve üst bilgisinin bir parçasıdır.
If-None-Match
Veya If-Match
atlanırsa, işlem koşulsuz olur.
Aşağıdaki yanıt yalnızca geçerli gösterim belirtilen etag
ile eşleşiyorsa anahtar-değeri alır:
GET /kv?key={key}&label={label}&api-version={api-version} HTTP/1.1
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Yanıt:
HTTP/1.1 412 PreconditionFailed
veya
HTTP/1.1 200 OK
Aşağıdaki yanıt, anahtar-değerleri yalnızca geçerli gösterimin belirtilen etag
ile eşleşmemesi durumunda alır:
GET /kv?key={key}&label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Yanıt:
HTTP/1.1 304 NotModified
veya
HTTP/1.1 200 OK
Sayfalandırma
Döndürülen öğe sayısı yanıt sınırını aşarsa sonuç sayfalanır. İsteğe bağlı Link
yanıt üst bilgilerini izleyin ve gezinti için kullanın rel="next"
.
Alternatif olarak, içerik özelliği biçiminde @nextLink
bir sonraki bağlantı sağlar. Bağlı URI bağımsız değişkenini api-version
içerir.
GET /kv?api-version={api-version} HTTP/1.1
Yanıt:
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}"
}
Filtreleme
ve filtrelemenin key
label
bir bileşimi desteklenir.
İsteğe bağlı key
ve label
sorgu dizesi parametrelerini kullanın.
GET /kv?key={key}&label={label}&api-version={api-version}
, label
ve tags
filtrelemenin key
birleşimi desteklenir.
İsteğe bağlı key
, label
ve tags
sorgu dizesi parametrelerini kullanın.
Biçiminde sorgu dizesi parametresi tagName=tagValue
olarak birden çok etiket filtresi sağlanabilir. Etiket filtreleri tam eşleşmelidir.
GET /kv?key={key}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}
Desteklenen filtreler
Anahtar filtresi | Etki |
---|---|
key atlanıyor veya key=* |
Herhangi bir anahtarla eşleşir |
key=abc |
abc adlı anahtarla eşleşir |
key=abc* |
abc ile başlayan anahtar adlarıyla eşleşir |
key=abc,xyz |
Anahtar adları abc veya xyz ile eşleşir (5 CSV ile sınırlıdır) |
Etiket filtresi | Etki |
---|---|
label atlanıyor veya label=* |
Herhangi bir etiketle eşleşir |
label=%00 |
Anahtar-değerleri etiketsiz olarak eşleştirir |
label=prod |
Prod etiketiyle eşleşir |
label=prod* |
Prod ile başlayan etiketlerle eşleşir |
label=prod,test |
Üretim veya test etiketleriyle eşleşir (5 CSV ile sınırlıdır) |
Etiketler filtresi | Etki |
---|---|
tags atlanıyor veya tags= |
Herhangi bir etiketle eşleşir |
tags=group=app1 |
değeriyle adlı group etikete sahip anahtar-değerlerle eşleşir app1 |
tags=group=app1&tags=env=prod |
değeriyle adlı etikete ve değerle app1 adlı group env bir etikete sahip anahtar-değerlerle eşleşir (5 etiket filtresiyle prod sınırlıdır) |
tags=tag1=%00 |
değeriyle adlı tag1 etikete sahip anahtar-değerlerle eşleşir null |
tags=tag1= |
Boş değerle adlı tag1 etikete sahip anahtar-değerlerle eşleşir |
Ayrılmış karakterler
*
, \
, ,
Ayrılmış karakter değerin bir parçasıysa, kullanılarak \{Reserved Character}
kaçış karakteri kullanılmalıdır. Ayrılmış olmayan karakterler de kaçılabilir.
Filtre doğrulama
Filtre doğrulaması başarısız olursa yanıt, hata ayrıntılarıyla HTTP 400
olur:
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
}
Örnekler
Tümü
GET /kv?api-version={api-version}
Anahtar adı abc ile başlar ve tüm etiketleri içerir
GET /kv?key=abc*&label=*&api-version={api-version}
Anahtar adı abc ile başlar ve etiket v1 veya v2'ye eşittir
GET /kv?key=abc*&label=v1,v2&api-version={api-version}
Belirli alanlar isteme
İsteğe bağlı $select
sorgu dizesi parametresini kullanın ve istenen alanların virgülle ayrılmış listesini sağlayın. $select
Parametresi atlanırsa, yanıt varsayılan kümeyi içerir.
GET /kv?$select=key,value&api-version={api-version} HTTP/1.1
Zamana bağlı erişim
Sonucun geçmiş bir zamanda olduğu gibi bir gösterimini elde edin. Daha fazla bilgi için bkz. bölüm 2.1.1. Sayfalandırma, bu makalenin önceki bölümlerinde tanımlandığı şekilde hala desteklenmektedir.
GET /kv?api-version={api-version} HTTP/1.1
Accept-Datetime: Sat, 12 May 2018 02:10:00 GMT
Yanıt:
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": [
....
]
}
Anahtarı ayarla
- Gerekli:
{key}
- İsteğe bağlı:
label
(Belirtilmezse veya label=%00, etiket olmadan anahtar-değer anlamına gelir.)
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",
}
}
Yanıt:
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",
}
}
Öğe kilitliyse aşağıdaki yanıt döndürülür:
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
}
Anahtarı ayarlama (koşullu olarak)
Yarış koşullarını önlemek için üst bilgileri kullanın If-Match
veya If-None-Match
isteyin. etag
bağımsız değişkeni, anahtar gösteriminin bir parçasıdır.
If-None-Match
Veya If-Match
atlanırsa, işlem koşulsuz olur.
Aşağıdaki yanıt yalnızca geçerli gösterim belirtilen etag
ile eşleşiyorsa değeri güncelleştirir:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Aşağıdaki yanıt değeri yalnızca geçerli gösterim belirtilen etag
ile eşleşmiyorsa güncelleştirir:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json;
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Aşağıdaki istek yalnızca bir gösterim zaten varsa değeri ekler:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json;
If-Match: "*"
Aşağıdaki istek yalnızca bir gösterim yoksa değeri ekler:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-None-Match: "*"
Yanıtlar
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...
veya
HTTP/1.1 412 PreconditionFailed
Sil
- Gerekli:
{key}
,{api-version}
- İsteğe bağlı:
{label}
(Belirtilmezse veya label=%00, etiket olmadan anahtar-değer anlamına gelir.)
DELETE /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Yanıt: Silinen anahtar değerini döndürebilir veya anahtar-değer yoksa hiçbirini döndüremezsiniz.
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...
veya
HTTP/1.1 204 No Content
Anahtarı silme (koşullu olarak)
Bu, bu makalenin önceki bölümlerindeki "Anahtarı ayarla (koşullu)" bölümüne benzer.