键/值修订版

“键/值修订版”定义了键/值资源的历史表示形式。 对于免费层存储,修订版会在 7 天后过期;对于标准层存储,则在 30 天后过期。 修订版支持 List 操作。

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

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

先决条件

  • 所有 HTTP 请求都必须经过身份验证。 请参阅身份验证部分。
  • 所有 HTTP 请求都必须提供显式的 api-version。 请参阅版本控制部分。

列出修订版

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

响应:

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

分页

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

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

响应:

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

响应

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

筛选

支持组合使用 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}

支持的筛选器

键筛选器 效果
省略 keykey=* 匹配任何键
key=abc 匹配名为“abc”的键
key=abc* 匹配以“abc”开头的键名称
key=*abc 匹配以“abc”结尾的键名称
key=*abc* 匹配包含“abc”的键名称
key=abc,xyz 匹配键名称“abc”或“xyz”(限制为 5 个 CSV)
标签筛选器 效果
省略 labellabel= 匹配没有标签的键值
label=* 匹配任何标签
label=prod 匹配标签“prod”
label=prod* 匹配以“prod”开头的标签
label=*prod 匹配以“prod”结尾的标签
label=*prod* 匹配包含“prod”的标签
label=prod,test 匹配标签“prod”或“test”(限制为 5 个 CSV)
标记筛选器 效果
省略 tagstags= 匹配任意标记
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 Character} 对其进行转义。 非保留字符也可以进行转义。

筛选器验证

如果出现筛选器验证错误,则响应为“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
}

示例

  • 所有:

    GET /revisions
    
  • 其中的键名称以“abc”开头的项:

    GET /revisions?key=abc*&api-version={api-version}
    
  • 其中的键名称为“abc”或“xyz”且标签包含“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

基于时间的访问

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

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

响应:

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