Key-value revisions

A key-value revision defines the historical representation of a key-value resource. 免费层和开发人员层存储的修订将在 7 天后过期,标准层和高级层存储的修订期为 30 天。 修订版支持 List 操作。

对于所有操作,key 为可选参数。 如果省略,则暗指任何键。

对于所有操作,label 为可选参数。 如果省略,则暗指任何标签。

Prerequisites

  • 所有 HTTP 请求都必须经过身份验证。 See the authentication section.
  • 所有 HTTP 请求都必须提供显式的 api-version。 See the versioning section.

List revisions

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

Responses:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8"
Accept-Ranges: items
{
    "items": [
        {
          "etag": "4f6dd610dd5e4deebc7fbaef685fb903",
          "key": "{key}",
          "label": "{label}",
          "content_type": null,
          "value": "example value",
          "last_modified": "2017-12-05T02:41:26.4874615+00:00",
          "tags": []
        },
        ...
    ],
    "@nextLink": "{relative uri}"
}

Pagination

如果返回的项数超过响应限制,则会对结果进行分页。 按照可选 Link 响应标头进行操作并使用 rel="next" 进行导航。 或者,内容以 @nextLink 属性的形式提供下一个链接。

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

Response:

HTTP/1.1 OK
Content-Type: application/vnd.microsoft.appconfig.kvs+json; charset=utf-8
Accept-Ranges: items
Link: <{relative uri}>; rel="next"
{
    "items": [
        ...
    ],
    "@nextLink": "{relative uri}"
}

列出修订版的子集

使用 Range 请求标头。 响应包含一个 Content-Range 标头。 如果服务器不能满足所请求的范围,则会以“HTTP 416 (RangeNotSatisfiable)”进行响应。

GET /revisions?api-version={api-version} HTTP/1.1
Range: items=0-2

Response

HTTP/1.1 206 Partial Content
Content-Type: application/vnd.microsoft.appconfig.revs+json; charset=utf-8
Content-Range: items 0-2/80

Filtering

支持组合使用 keylabel 筛选。 使用可选的 keylabel 查询字符串参数。

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

支持将 keylabeltags 组合起来用于筛选。 使用可选的 keylabeltags 查询字符串参数。 可以以 tagName=tagValue 格式提供多个标记筛选器作为查询字符串参数。 标记筛选器必须完全匹配。

GET /revisions?key={key}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}

Supported filters

Key filter Effect
省略 keykey=* Matches any key
key=abc Matches a key named abc
key=abc* Matches keys names that start with abc
key=*abc Matches keys names that end with abc
key=*abc* Matches keys names that contain abc
key=abc,xyz Matches keys names abc or xyz (limited to 5 CSV)
Label filter Effect
省略 labellabel= 匹配没有标签的键值
label=* Matches any label
label=prod Matches the label prod
label=prod* Matches labels that start with prod
label=*prod Matches labels that end with prod
label=*prod* Matches labels that contain prod
label=prod,test Matches labels prod or test (limited to 5 CSV)
Tags filter Effect
省略 tagstags= Matches any tag
tags=group=app1 匹配包含名为 group 且值为 app1 的标记的键值
tags=group=app1&tags=env=prod 匹配包含名为 group 且值为 app1 的标记,以及名为 env 且值为 prod 的标记的键值(限制为 5 个标记筛选器)
tags=tag1=%00 匹配包含名为 tag1 且值为 null 的标记的键值
tags=tag1= 匹配包含名为 tag1 且值为空的标记的键值

Reserved characters

保留字符为:

*\,

如果保留字符是值的一部分,则必须使用 \{Reserved Character} 对其进行转义。 非保留字符也可以进行转义。

Filter validation

如果出现筛选器验证错误,则响应为“HTTP 400”,其中包含以下错误详细信息:

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
}

Examples

  • All:

    GET /revisions
    
  • Items where the key name starts with abc:

    GET /revisions?key=abc*&api-version={api-version}
    
  • Items where the key name is either abc or xyz, and labels contain prod:

    GET /revisions?key=abc,xyz&label=*prod*&api-version={api-version}
    

请求特定字段

使用可选的 $select 查询字符串参数,并提供逗号分隔的所请求字段列表。 如果省略 $select 参数,则响应会包含默认集。

GET /revisions?$select=value,label,last_modified&api-version={api-version} HTTP/1.1

Time-based access

获得结果在过去的表现形式。 有关详细信息,请参阅用于对资源状态进行基于时间的访问的 HTTP 框架 - Memento 的 2.1.1 部分。

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

Response:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.revs+json"
Memento-Datetime: Sat, 12 May 2018 02:10:00 GMT
Link: <{relative uri}>; rel="original"
{
    "items": [
        ....
    ]
}