接下来我们来看bcs里面的实体对象。在介绍这个之前,我们首先来看一下bcs api都可以干什么。从官方文档我们可以看到,有三类api,分别是针对bucket的,针对object的,针对acl操作类的。
- 云存储Bucket可以看成是命名空间,开发者上传的任何数据必须是属于某个Bucket。上传任何数据之前请先确认是否已经创建Bucket,有关Bucket命名限制请参考约束与限制创建Bucket,分别有三个接口。分别为创建,删除,List Bucket。
- Put Bucket 创建bucket,传递bucket名称和以及相应的acl信息(不是必须的)
- List Bucket 列举bucket下面的所有的bucket,显示bucket名称和创建时间
- Delete Bucket 直接删除
-
百度云存储object可以支持文本,多媒体,二进制等任何类型的数据,
操作类型分为创建,删除,copy,list object等部分,接口如下:
-
Put Object 上传一个文件,可以传递一些上传文件的源数据
-
Copy Object 将一个文件从一个bucket复制到另外一个bucket下面,可以根据参数决定是否更改元数据
-
Put Superfile 上传大文件,超大文件,上传的时候要进行分片,最后上传一个superfile对象
-
Get Object 下载一个文件,根据一些原数据可以获取相应的文件
-
Head Object 获取一个文件的元数据
-
List Object 获取一个bucket下面所有的文件
-
Delete Object 删除一个文件
-
百度云存储通过ACL实现资源的权限认证,开发者可以通过设置ACL来实现复杂的资源管理。
-
Put_Acl 设置bucket或者文件的acl
-
Get_Acl 获取bucket或者文件的acl
我们简单的来看一下作者这些实体类的意图:
- BCSClientException和BCSServiceException这两个类,从名称来看就是异常类,它是继承RuntimeException,所以从这个定义来看,bcs的异常都是可以不用捕捉的。
- BucketSummary 是对一个bucket的描述信息,里面包含名称,创建时间,已经总大小和已经使用的大小等,但是初步来看这个类有点贫血,这个地方其实应该返回可以使用大小等一些导出属性的
- DownloadObject 这个类代表一个下载的文件,包含文件名称,所在的bucket,对象的元数据objectMetadata,已经数据inputstream。
- ObjectListing 这个代表文件list后的一个结果对象,如果说的通俗一点有点像list一个文件目录,它包含这个目录的一个元数据和里面得文件,元数据有所在bucket,对象的总个数,prefix这个属性比较怪,从官方文档并没有找到相应的解释,从官方给的返回的json数据里面也没有找到,start和list其实就是这个文件夹里面对象的起始的下标,limit是记录总个数,这个其实是给分页用的,相信大家都理解了,就不多讲了。
- ObjectMetadata 这个代表一个文件的原数据,里面包含两种类型的原数据,一个是userMetaData,这个最多支持100个,下一个是文件的元数据,其实是一些http的参数,关于这些参数,我在发起请求的地方进行讲解
- ObjectSummary 这个对象是从类图上看是专门为ObjectListing服务的,代表一个文件的摘要信息,包括名称、大小、最后修改时间、版本、是否是超大文件、父文件路径、是否是一个路径一下文件的元数据信息
- Resource 这个包括一个bucket和object,这个相当简单
- SuperfileSubObject 代表是一个超大文件的子部分,其中包含bucket、文件名称、以及起到校验用途的etag
- X_BS_ACL 这个代表的是一个acl的枚举常量
- Empty从类名来看就是空的意思,Pair也是一个辅助对象,这两个对象在实际的应用场景里面再进行讲解吧
好了,实体对象就先讲解到这个地方,下面将进行详细讲解请求的发起。