Partilhar via


Chaves-valor

Um valor-chave é um recurso identificado pela combinação exclusiva de key + label. label é opcional. Para referenciar explicitamente um valor-chave sem uma etiqueta, utilize "\0" (URL codificado como %00). Veja os detalhes de cada operação.

Este artigo aplica-se à versão 1.0 da API.

Operações

  • Get
  • Listar múltiplos
  • Definir
  • Eliminar

Pré-requisitos

  • Todos os pedidos HTTP têm de ser autenticados. Veja a secção de autenticação .
  • Todos os pedidos HTTP têm de fornecer explicitamente api-version. Veja a secção controlo de versões .

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

Obter chave-valor

Obrigatório: {key}, {api-version}
Opcional: label (Se omitido, implica um valor-chave sem uma etiqueta.)

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

Respostas:

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

Se a chave não existir, é devolvida a seguinte resposta:

HTTP/1.1 404 Not Found

Obter (condicionalmente)

Para melhorar a colocação em cache do cliente, utilize If-Match ou If-None-Match solicite cabeçalhos. O etag argumento faz parte da representação da chave. Para obter mais informações, consulte as secções 14.24 e 14.26.

O pedido seguinte obtém o valor-chave apenas se a representação atual não corresponder ao especificado etag:

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

Respostas:

HTTP/1.1 304 NotModified

ou

HTTP/1.1 200 OK

Listar valores-chave

Opcional: key (Se não for especificado, implica qualquer chave.) Opcional: label (Se não for especificado, implica qualquer etiqueta.)

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

Resposta:

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

Para obter opções adicionais, consulte a secção "Filtragem" mais à frente neste artigo.

Paginação

O resultado será paginado se o número de itens devolvidos exceder o limite de resposta. Siga os cabeçalhos de resposta opcionais Link e utilize rel="next" para a navegação. Em alternativa, o conteúdo fornece uma ligação seguinte sob a forma da @nextLink propriedade . O URI ligado inclui o api-version argumento .

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

Resposta:

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

Filtragem

É suportada uma combinação de key e label filtragem. Utilize os parâmetros de cadeia de consulta e label opcionaiskey.

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

Filtros suportados

Filtro de chave Efeito
key é omitido ou key=* Corresponde a qualquer chave
key=abc Corresponde a uma chave chamada abc
key=abc* Corresponde a nomes de chaves que começam com abc
key=abc,xyz Corresponde aos nomes das chaves abc ou xyz (limitado a 5 CSV)
Filtro de etiqueta Efeito
label é omitido ou label=* Corresponde a qualquer etiqueta
label=%00 Corresponde a KV sem etiqueta
label=prod Corresponde à etiqueta prod
label=prod* Corresponde a etiquetas que começam com prod
label=prod,test Corresponde a etiquetas prod ou teste (limitado a 5 CSV)

Carateres reservados

*, \, ,

Se um caráter reservado fizer parte do valor, tem de ser escapado com \{Reserved Character}. Os carateres não reservados também podem ser escapados.

Validação de filtros

No caso de um erro de validação de filtro, a resposta é HTTP 400 com detalhes de erro:

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
}

Exemplos

  • Todos

    GET /kv?api-version={api-version}
    
  • O nome da chave começa com abc e inclui todas as etiquetas

    GET /kv?key=abc*&label=*&api-version={api-version}
    
  • O nome da chave começa com abc e a etiqueta é igual a v1 ou v2

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

Pedir campos específicos

Utilize o parâmetro de cadeia de consulta opcional $select e forneça uma lista separada por vírgulas dos campos pedidos. Se o $select parâmetro for omitido, a resposta contém o conjunto predefinido.

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

Acesso baseado no tempo

Obtenha uma representação do resultado tal como era num momento anterior. Para obter mais informações, consulte a secção 2.1.1. A paginação ainda é suportada conforme definido anteriormente neste artigo.

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

Resposta:

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

Definir chave

  • Obrigatório: {key}
  • Opcional: label (Se não for especificado ou label=%00, implica um valor-chave sem uma etiqueta.)
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",
  }
}

Respostas:

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

Se o item estiver bloqueado, receberá a seguinte resposta:

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
}

Definir chave (condicionalmente)

Para impedir condições de corrida, utilize If-Match ou If-None-Match solicite cabeçalhos. O etag argumento faz parte da representação da chave. Se If-Match for ou If-None-Match for omitido, a operação é incondicional.

A resposta seguinte só atualiza o valor se a representação atual corresponder ao especificado etag:

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

A resposta seguinte só atualiza o valor se a representação atual não corresponder ao especificado 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"

O pedido seguinte só adiciona o valor se já existir uma representação:

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

O pedido seguinte só adiciona o valor se ainda não existir uma representação:

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

Respostas

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

ou

HTTP/1.1 412 PreconditionFailed

Eliminar

  • Obrigatório: {key}, {api-version}
  • Opcional: {label} (Se não for especificado ou label=%00, implica um valor-chave sem uma etiqueta.)
DELETE /kv/{key}?label={label}&api-version={api-version} HTTP/1.1

Resposta: Devolver o valor-chave eliminado ou nenhum se o valor-chave não existir.

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

ou

HTTP/1.1 204 No Content

Eliminar chave (condicionalmente)

Isto é semelhante à secção "Definir chave (condicionalmente)" anteriormente neste artigo.