文档中心
BlockDB产品API接入说明

第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"

 } ]