此操作用来返回Bucket中部分或者全部(最多1000)的Object信息。用户可以在请求元素中设置选择条件来获取Bucket中的Object的子集。
请求语法
GET / HTTP/1.1
Host: BucketName.oos-cn.ctyunapi.cn
Date: date
Authorization: SignatureValue
请求参数
名称 | 描述 | 是否必须 |
---|---|---|
BucketName | 存储桶名称。 类型:字符串。 |
是 |
delimiter | 分隔符,一个用来对关键字们进行分组的字符。所有的关键字都包含delimiter和prefix间的相同子串,prefix之后第一个遇到delimiter的字符串都会加到一个叫CommonPrefix的组中。如果没有特别定义prefix,所有的关键字都会被返回,但不会有CommonPrefix。delimiter 只支持”/”,不支持其他分隔符。 类型:字符串。 |
否 |
marker | 分页标识。还有需要返回的用户时,上条响应结果中会返回该参数。查看未显示项时,请求参数中需要携带此参数。 类型:字符串。 取值:与上条响应中返回的结果值相同。 |
否 |
max-keys | 设置响应中最多返回的条数。如果存在超出您指定的返回项,则IsTruncated响应元素为true,表示需要再次发送请求查看未显示的项。查看未显示的项时,需要携带响应参数Marker的值。 类型:整型。 取值:1~1000,默认值为1000。 |
否 |
prefix | 前缀用来限制返回的结果必须以这个前缀开始,可以通过前缀将bucket分为若干个组。 | 否 |
encoding-type | 指定响应中Delimiter、Marker、Prefix、NextMarker、Key、CommonPrefixes.Prefix的编码类型。如果Delimiter、Marker、Prefix、NextMarker、Key、CommonPrefixes.Prefix包含xml 1.0标准不支持的控制字符,可通过设置该参数对响应中的Delimiter、Marker、Prefix、NextMarker、Key、CommonPrefixes.Prefix进行编码。 类型:字符串。 取值:url,字母不区分大小写。 |
否 |
响应结果
名称 描述 ListBucketResult 包含响应的容器。
类型:容器。
子节点:Name、Prefix、Marker、MaxKeys、EncodingType、Delimiter、IsTruncated、NextMarker、Contents、CommonPrefixes
Name Bucket的名称。
类型:字符串。
父节点:ListBucketResult。
Prefix 关键字以特定的前缀开始。
类型:字符串。
父节点:ListBucketResult。
Marker 标记从哪个位置开始罗列出bucket中的object。
类型:字符串。
父节点:ListBucketResult。
MaxKeys 响应中最多返回的条数。
类型:字符串。
父节点:ListBucketResult。
EncodingType Delimiter、Marker、Prefix、NextMarker、Key的编码类型。
类型:字符串。
父节点:ListBucketResult。
Delimiter 分隔符。
类型:字符串。
父节点:ListBucketResult。
IsTruncated 通过是(true)或否(false)来表示返回的结果是否为所有要求的结果。
类型:Boolean。
父节点:ListBucketResult。
NextMarker 若IsTruncated返回true,用户可以将NextMarker的值设置为下次请求中的marker参数,以便获取后续文件。
类型:字符串。
父节点:ListBucketResult。
Contents 每个Object返回的元数据。
类型:容器。
父节点:ListBucketResult。
子节点:Key,LastModified,Etag,Size,StorageClass。
Key 文件的关键字。
类型:字符串。
父节点:Contents。
LastModified 记录的文件最后一次被修改的日期和时间。
类型:字符串。
父节点:Contents。
ETag 通过MD5的方式计算出标签,ETag主要用来反映文件内容的信息发生了改变,并不反映元数据的变化。
类型:字符串。
父节点:Contents。
Size 记录文件object的大小。
类型:字符串。
父节点:Contents。
StorageClass 存储类型:
STANDARD:标准存储。
STANDARD_IA:低频访问存储。
类型:字符串。
父节点:Contents。
CommonPrefixes 当定义delimiter之后,返回结果中会包含CommonPrefixes,CommonPrefix中包含以prefix开头,delimiter结束的字符串组合,比如prefix是note/,同时delimiter是斜杠(/),结果中的note/summer/july/lotus.jpg将返回note/summer/,其余结果将按照Maxkeys要求返回。
类型:容器。
父节点:ListBucketResult。
子节点:Prefix。
CommonPrefixes.Prefix 如果请求中不包含Prefix参数,那么这个元素只显示那些在delimiter字符第一次出现之前的key的子字符串,且这些key不在响应的其它位置出现。
如果请求中包含Prefix参数,那么这个元素显示在prefix之后,到第一次出现delimiter之间的子串。
类型:字符串。
父节点:CommonPrefixes。
请求示例1
GET / HTTP/1.1
Host: docs.oos-cn.ctyunapi.cn
x-amz-content-sha256: UNSIGNED-PAYLOAD
X-Amz-Date: 20200304T070632Z
Content-Type: application/xml; charset=utf-8
Authorization: SignatureValue
响应示例1
HTTP/1.1 200 OK
Date: Wed, 04 Mar 2020 07:06:40 GMT
x-amz-request-id: b13be3abf4db4af33eaaaeb5bdb5b7bd7c7e82727476787a7c
Content-Length: 538
Content-Type: application/xml; charset=utf-8
Server: CTYUN
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/docs/2006-03-01/">
<Name>docs</Name>
<Prefix></Prefix>
<Marker></Marker>
<MaxKeys>1000</MaxKeys>
<EncodingType></EncodingType>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>1.png</Key>
<LastModified>2020-03-04T07:04:48.135Z</LastModified>
<ETag>"01fa001a4c65b834696c5e0049fd5004"</ETag>
<Size>25348</Size>
<StorageClass>STANDARD</StorageClass>
<Owner>
<ID></ID>
<DisplayName></DisplayName>
</Owner>
</Contents>
</ListBucketResult>
使用请求变量的示例
假设数据库中存储数据如下所示:
docs/sample.pdf
docs/Ant/sample.doc
docs/Feb/sample2.doc
docs/Feb/sample3.doc
docs/Feb/sample4.doc
要查询prefix为docs/,delimiter为/,同时marker为docs/F,max-keys为40的结果,请求头为
GET /?prefix=docs/&marker=docs/F&max-keys=40&delimiter=/ HTTP/1.1
Host: docs.oos-cn.ctyunapi.cn
Date: Mon, 03 Sep 2012 12:00:00 GMT
Authorization: AWS 81ebc16ddc8d2af82c90:thdUi9VAkzhkniLj96JIrOPGi0g
返回的结果集为:
<ListBucketResult xmlns="http://oos-cn.ctyunapi.cn/docs/2012-09-03/">
<Name>docs</Name>
<Prefix>docs/</Prefix>
<Marker>docs/F</Marker>
<MaxKeys>40</MaxKeys>
<Delimiter>/</Delimiter>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>sample.pdf</Key>
<LastModified>2012-09-01T01:56:20.000Z</LastModified>
<ETag>"bf1d737a4d46a19f3bced6905cc8b902"</ETag>
<Size>142863</Size>
<Owner>
<ID> </ID>
<DisplayName> </DisplayName>
</Owner>
<StorageClass>STANDARD</StorageClass>
</Contents>
<CommonPrefixes>
<Prefix>Feb/</Prefix>
<Prefix>Ant/</Prefix>
</CommonPrefixes>
</ListBucketResult>