第1章 获取BlockDB产品服务
1.1 购买产品
BlockDB作为众安科技云上的一款开箱即用的高可信、可审计分布式账本存证数据库产品。对敏感数据的任何操作及所形成的数据历史版本都将被BlockDB完整记录。基于密码学的可证明查询机制保证数据全流程不可篡改。用户在使用前需要先注册众安科技云并购买,具体如下:
1、登录进入“众安科技云控制台”: https://console.zhongan.io/ ,如没有账号请注册。

2、在“众安科技云控制台”完成实名认证。

3、进入“众安科技云首页”: https://www.zhongan.io/ 购买BaaS平台的链。
选择产品 -BlockDB产品,进入BlockDB产品展示页

点击立即购买,进入BlockDB产品购买页

选择产品规格:预付费-BlockDB试用版,免费进行试用,注意试用版不保证服 务的可用性及数据的持续保存性;
预付费-BlockDB标准版,费用90000/年进行收费;
点击下一步完成支付

支付成功后,点击前往BaaS平台,即可进入管控平台。

1.2 申请API使用权限
众安科技云会为每个API调用进行身份验证,所以在调用众安科技云BaaS平台API之前,用户需要在众安科技云上申请API使用权限,具体如下:
1、在“众安科技云控制台”: https://console.zhongan.io/ 创建应用密钥。
进入用户中心 - 应用秘钥管理页面

进入应用密钥管理页面,并点击accessKey创建密钥

点击编辑,绑定密钥和已购买的Blockdb产品

2、应用密钥创建成功,获取accessKey和accessSecret。其中accessKey用于标识用户身份,accessSecret用于客户端加密签名、服务器端验证签名和调用API的凭证,必须严格保密。
第2章 API调用
2.1 引入SDK的maven依赖
<dependency>
<groupId>com.zhongan.tech</groupId>
<artifactId>anlink-openapi-sdk</artifactId>
<version>1.3.6-RELEASE</version>
</dependency>
2.2 初始化client
//设置环境,可选值SDKConstants.ENV_TEST、SDKConstants.ENV_PRE、SDKConstants.ENV_PRD,分别对应3套环境:测试环境、预发环境、生产环境
//设置accessKey和accessSecret用于API身份验证,获取方法请参考第1章,获取到的为生产环境的accessKey和accessSecret
SDKConfig config = new SDKConfig(SDKConstants.ENV_PRD, accessKey, accessSecret);
//初始化client
IAnlinkClient client = new DefaultAnlinkClient(config);
2.3 通过client调用API
//创建API请求
AnlinkRequest request= new AnlinkRequest();
//设置Uri,以下为示例Uri,每个API的真实Uri请参考第3章
request.setUri("/demo/uri");
//设置Method Type,以下为示例Method Type,每个API的真实Method Type请参考第3章
request.setMethodType(MethodType.POST);
//设置Content Type,以下为示例Content Type,每个API的真实Content Type请参考第3章
request.setContentType("application/json");
request.setAccept("application/json");
//设置Request Body,以下为示例Request Body,每个API的真实Request Body请参考第3章
Map<String,Object> requestBody= new HashMap<String, Object>();
requestBody.put("requestkey1","requestvalue1");
request.setPostData(requestBody);
//设置是否给Request Body签名,可选值LogicEnum.YES、LogicEnum.NO
request.setIfSignPostBody(LogicEnum.YES);
//调用API
String result =client.doAction(request);
第3章 API列表
3.1 存入数据
·Uri:/blockdb/data/queryAuditData
·Method Type:GET
·Content Type:application/json
·Request Body:N/A
·Request Body:
字段名称 类型 必填(Y/N) 备注
blockdbId String Y Blockdb id
primaryKey String Y 用户数据id
data JsonObject Y 用户数据,任意非空json数据。实例:
"data" : {
"name": "zhangsan",
"age" : 20.0
}
timestamp Long N 时间阀,为空则取当前时间
type String Y 数据类型,可以用于区分不同业务数据
ip String N IP地址
·Response Body:
字段名称 类型 备注
success Boolean 调用API是否成功,true为成功,false为失败
code String 成功为”0000”, 若调用失败,返回错误代码
msg String 若调用失败,返回错误信息
3.2 审计查询
·Uri:/blockdb/data/queryAuditData
·Method Type:POST
·Content Type:application/json
·Request Body:
字段名称 类型 必填(Y/N) 备注
blockdbId String Y Blockdb id
primaryKey String N 用户数据id
timestamp Long N 时间阀,为空则取当前时间
type String N 数据类型,可以用于区分不同业务数据
ip String N IP地址
other JsonString N 其他查询条件,json string 格式,类似于语法查询api中的查询语法。
pageNo Int Y 页数
pageSize Int Y 每页数据量
·Response Body:
字段名称 类型 备注
success Boolean 调用API是否成功,true为成功,false为失败
code String 成功为”0000”, 若调用失败,返回错误代码
msg String 若调用失败,返回错误信息
total Int 匹配数据总数
pageNo Int 当前页数
pageSize Int 每页数据量
data JsonArray 若调用成功,返回查询到的数据,示例:
"data" : [ {
"type" : "sdk_test",
"primaryKey" : "18888",
"timestamp" : "2020-04-16 18:39:25",
"hash" : "0xcd133758fed845750b8b0c8a7938c8ef9bd1bf746429ed37c67ccac2bb7bf950",
"data" : {
"name" : "zhangsan",
"age" : 20.0
}
} ]
3.3 语法查询
·Uri:/blockdb/data/queryGrammarData
·Method Type:POST
·Content Type:application/json
·Request Body:
字段名称 类型 必填(Y/N) 备注
blockdbId String Y Blockdb id
grammar JsonString N 查询条件,json string 格式。支持mongodb 查询语法,例如 :
“grammar”:”{\”data.data.name\”:\”zhangsan\”}”
pageNo Int Y 页数
pageSize Int Y 每页数据量
·Response Body:
字段名称 类型 备注
success Boolean 调用API是否成功,true为成功,false为失败
code String 成功为”0000”, 若调用失败,返回错误代码
msg String 若调用失败,返回错误信息
total Int 匹配数据总数
pageNo Int 当前页数
pageSize Int 每页数据量
data JsonArray 若调用成功,返回查询到的数据,示例:
"data" : [ {
"type" : "sdk_test",
"primaryKey" : "18888",
"timestamp" : "2020-04-16 18:39:25",
"hash" : "0xcd133758fed845750b8b0c8a7938c8ef9bd1bf746429ed37c67ccac2bb7bf950",
"data" : {
"name" : "zhangsan",
"age" : 20.0
}
} ]
3.4 语法历史查询
·Uri:/blockdb/data/queryGrammarHistory
·Method Type:POST
·Content Type:application/json
·Request Body:
字段名称 类型 必填(Y/N) 备注
blockdbId String Y Blockdb id
pageNo Int Y 页数
pageSize Int Y 每页数据量
·Response Body:
字段名称 类型 备注
success Boolean 调用API是否成功,true为成功,false为失败
code String 成功为”0000”, 若调用失败,返回错误代码
msg String 若调用失败,返回错误信息
total Int 匹配数据总数
data JsonArray 若调用成功,返回查询到的数据,示例:
"data" : [ {
"grammar" : "{'data.data.name':'zhangsan'}",
"gmtModified" : "Fri Apr 17 14:21:42 CST 2020"
} ]