开发者社区> 问答> 正文

创建Vault功能的同步、异步接口的定义

在AliyunOASClient中,每个功能都会有同步和异步两个接口,比如创建Vault这个功能它的同步、异步接口的定义分别如下: /**
* 创建Vault同步接口
* @param createVaultRequest 创建Vault请求对象
* @return CreateVaultResult 对象
* @throws OASClientException 客户端异常
* @throws OASServerException 服务端异常
*/
public CreateVaultResult createVault(CreateVaultRequest createVaultRequest)
    throws OASClientException, OASServerException;

/**
* 创建Vault异步接口
* @param <T> 返回对象的类型
* @param createVaultRequest 创建Vault请求对象
* @param handler 异步请求处理器
* @return ListenableFuture对象
* @throws OASClientException 客户端异常
* @throws OASServerException 服务端异常
*/
public <T> ListenableFuture<T> createVaultAsync(
    CreateVaultRequest createVaultRequest, AsyncHandler<T> handler)
    throws OASClientException, OASServerException;


二者的区别:

  1. 命名上异步接口均以[backcolor=transparent]Async字眼结尾以示区别;
  2. 同步接口返回的均是OAS解析后的结果类;异步接口返回的是ListenableFuture对象,关于ListenableFuture的使用请参考 AsyncHttpClient 项目文档


同步接口


每一个同步接口都以[backcolor=transparent]OASRequest(或其子类)为参数,以[backcolor=transparent]OASResult(或其子类)为返回结果。[backcolor=transparent]OASRequest和[backcolor=transparent]OASResult的每一个成员变量均带有 gettersetterwith 方法,其中 with 方法能与 setter 相同,但返回值是 this 引用,可用于级联操作。
下文将主要介绍同步接口的使用。其中,前四节将会介绍各个接口的请求参数和返回值,而其中出现的自定义类型将会在descriptor、其他类型一节和工具一章介绍。
[backcolor=transparent]OASRequest仅作为公共父类,没有实现任何方法。
[backcolor=transparent]OASResult包含的变量如下表所述。
成员变量类型含义
requestIdString请求的唯一标识,见 OAS API文档2.4.2节
dateDate请求的响应时间,见 OAS API文档2.4.2节

低级接口是《OAS API手册》所定义的接口的直接映射,为方便用户查阅,下文叙述顺序与《OAS API手册-第四节》顺序保持一致,对于各个参数具体含义,请务必参阅《OAS API手册》对应的描述。
下面以创建Vault和上传Archive两个例子简单示例同步接口的使用,其他功能接口的使用均与此相似。 // 创建Vault
CreateVaultRequest createVaultRequest = new CreateVaultRequest().withVaultName("[yourVaultName]");
CreateVaultResult createVaultResult = aliyunOASClient.createVault(createVaultRequest);
String vaultId = createVaultResult.getVaultId();

// 上传Archive
File file = new File("[pathOfFileToUpload]");
String contentEtag = new ContentEtagGenerator().update(file).asHex();
String treeEtag = new TreeEtagGenerator().update(file).asHex();
UploadArchiveRequest uploadRequest = new UploadArchiveRequest()
    .withVaultId(vaultId)
    .withFile(file)
    .withContentEtag(contentEtag)
    .withTreeEtag(treeEtag);
UploadArchiveResult uploadResult = client.uploadArchive(uploadRequest);
String archiveId = uploadResult.getArchiveId();

展开
收起
云栖大讲堂 2017-10-26 14:58:35 1931 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
fibjs 模块重构从回调到协程--陈垒 立即下载
《Pulsar 2.8.0 功能特性概述及规划》 立即下载
“静态调用链路发现”应用场景分析及实践探索 立即下载