listObjectVersions
更新时间:2026-09-20
接口描述
本接口用于获得指定 Bucket 的 Object 多版本信息列表。调用该接口前,目标 Bucket 需要已开启版本控制;接口返回满足查询条件的 Object 版本列表、删除标记以及分页信息。
请求需要使用百度智能云 BOS 鉴权信息进行签名认证。
请求
请求结构
Http
1GET /?versions HTTP/1.1
2Host: <BucketName>.bj.bcebos.com
3Date: <Date>
4Authorization: <AuthorizationString>
5```### 请求头域
6
7无特殊 Header 参数。### 请求参数
8
9| 字段 | 类型 | 位置 | 是否必需 | 描述 |
10| --- | --- | --- | --- | --- |
11| delimiter | String | Query | 否 | 分隔符,主要用于实现 list 文件夹的逻辑。如果请求时指定了 `delimiter`,BOS 会把匹配到的 Object 名称按照一定规则(从 `prefix` 到第一个 `delimiter`)截取,截取后的字符串去重后作为 `commonPrefixes` 数据返回。`delimiter` 长度限制为 1。 |
12| marker | String | Query | 否 | Object 按字母序排列,从 `marker` 之后的第一个 Object 开始返回。 |
13| maxKeys | Integer | Query | 否 | 返回 Object 列表长度,最大值为 1000,默认值为 1000。如果指定的值大于 1000,按 1000 处理。 |
14| prefix | String | Query | 否 | Object Key 前缀,限定返回的 Object Key 必须以此为前缀。 |
15| versionIdMarker | String | Query | 否 | VersionId 的起始位置,从 `versionIdMarker` 之后的第一个版本开始返回。 |
16| versions | String | Query | 是 | 多版本列表查询子资源。请求 URL 可使用 `?versions`,签名时按 `versions=` 参与 Canonical Query 计算。 |## 响应
17
18### 响应头域
19
20无特殊 Header 参数响应。### 响应参数
21
22| 名称 | 类型 | 描述 |
23| --- | --- | --- |
24| commonPrefixes | Array | 仅当指定 `delimiter` 时,才会返回此项。 |
25| commonPrefixes.prefix | String | 匹配以 `prefix` 开始到第一次出现 `delimiter` 字符之间的 Object,作为一组元素返回。 |
26| contents | Array | 返回的 Object 版本列表。 |
27| contents.key | String | Object 名称。 |
28| contents.lastModified | Date | 此 Object 最后一次被修改的时间。 |
29| contents.eTag | String | Object 的 HTTP 协议实体标签。 |
30| contents.size | Integer | Object 内容的大小,单位为字节。 |
31| contents.versionId | String | Object 的版本号。 |
32| contents.isLatest | Boolean | Object 是否为最新版本。 |
33| contents.deleteMarker | Boolean | Object 是否为删除标记。 |
34| contents.storageClass | String | Object 的存储类型。低频存储返回 `STANDARD_IA`,冷存储返回 `COLD`,归档存储返回 `ARCHIVE`,标准存储返回 `STANDARD`。 |
35| contents.owner | Object | 上传者的用户信息。 |
36| contents.owner.id | String | Object 上传者的用户 ID。 |
37| contents.owner.displayName | String | Object 上传者的名称。 |
38| delimiter | String | 查询的结束符。 |
39| isTruncated | Boolean | 指明是否完整返回查询结果。`false` 表示本次已经返回所有结果,`true` 表示本次还没有返回所有结果。 |
40| maxKeys | Integer | 请求返回的最大数目。 |
41| marker | String | 本次查询的起点。 |
42| name | String | Bucket 名称。 |
43| nextMarker | String | 当 `isTruncated` 为 `true` 时,才返回此项,作为下次查询 `marker` 的值。 |
44| nextVersionIdMarker | String | 当 `isTruncated` 为 `true` 时,才返回此项,作为下次查询 `versionIdMarker` 的值。 |
45| prefix | String | 查询的前缀。 |> **注意事项**
46>
47> Delimiter 可以用来实现文件夹逻辑:
48>
49> 1. 如果把 prefix 设为某个文件夹名,就可以罗列以此 prefix 开头的文件,即该文件夹下递归的所有的文件和子文件夹内的文件。
50> 2. 如果再把 delimiter 设置为 / 时,返回值就只罗列该文件夹下的文件,该文件夹下的子文件夹名返回在 CommonPrefixes 部分,子文件夹下递归的文件不被显示。如一个 bucket 下存在三个 object:fun/test.jpg,fun/movie/001.avi,fun/movie/007.avi。若设定 prefix 为“fun/”,则返回三个 object;如果增加设定 delimiter 为“/”,则返回文件“fun/test.jpg”和前缀“fun/movie/”。## 示例
51
52### 请求示例
53
54```http
55GET /?maxKeys=1&versions HTTP/1.1
56Host: <BucketName>.bj.bcebos.com
57Date: Wed, 06 Apr 2016 06:34:40 GMT
58Authorization: <AuthorizationString>
59```### 响应示例
60
61```http
62HTTP/1.1 200 OK
63x-bce-request-id: 4db2b34d-654d-4d8a-b49b-3049ca786409
64Date: Wed, 06 Apr 2016 06:34:40 GMT
65Server: BceBos
JSON
1{
2 "name": "bucket",
3 "prefix": "",
4 "delimiter": "",
5 "marker": "",
6 "maxKeys": 1,
7 "isTruncated": false,
8 "nextVersionIdMarker": "AKyQMlG4ihY=",
9 "contents": [
10 {
11 "key": "my-image.jpg",
12 "lastModified": "2009-10-12T17:50:30Z",
13 "eTag": "fba9dede5f27731c9771645a39863328",
14 "size": 434234,
15 "storageClass": "STANDARD",
16 "isLatest": true,
17 "versionId": "AKyQMlG4ihY=",
18 "owner": {
19 "id": "168bf6fd8fa74d9789f35a283a1f15e2",
20 "displayName": "mtd"
21 }
22 }
23 ]
24}
评价此篇文章
