InfoChain 访问接口

InfoChain允许终端用户以JSON格式请求查询存储的数据,或者调用修改。 InfoChain请求格式灵活,开发者只需提供一些必填项,必要时按照InfoChain的建议定义一些预定义项,并避免使用一些保留项,开发者可以根据自己的业务逻辑定义和解释记录项 ,就像定义传统数据库一样。

InfoChain接受以下类型的请求:

1. CreateUser

用途:

为用户自己创建用户记录。

必填项:

Func: “CreateUser”

UserName: 发起请求的唯一用户名

Password: 用户的密码。 如果未提供,则用户必须提供 PassHash 项

PassHash: 用户的密码哈希字符串。 如果未提供,则用户必须提供密码项。 当使用Deliver.js或CommDeliver.js时,Password项将自动转换为PassHash项。 如果InfoChain收到的请求字符串中的Password项尚未转换为PassHash,则InfoChain将进行转换工作。 开发者还可以创建自定义密码哈希函数,只需确保转换结果唯一且安全

预定义项:

保留项:

Client: 部署 Deliver 或 CommDeliver 应用程序的设备的标识,由 Deliver 或 CommDeliver 自动生成

ID: 用户在InfoChain中的ID,由InfoChain自动生成

Datatype: 强制设置为“User”,由 InfoChain 自动设置

UserType: 强制设置为“Common”,由InfoChain自动设置

请求示例:

{“Func”:”CreateUser”,”UserName”:”TestUser1”,”Password”:”11223344”,”Phone”:”81728826”,”Email”:”abc@xyz.com”}

该请求是创建一个用户,用户名是TestUser1,密码是11223344,电话是81728826,邮箱是 abc@xyz.com

2 QueryUser

用途:

根据用户名和密码查询整个用户记录

必填项:

Func: “QueryUser”

UserName: 发起请求的唯一用户名

Password(or PassHash): 用户的密码或密码哈希字符串。 参见第 1 节

预定义项:

保留项:

请求示例:

{“Func”:”QueryUser”,”UserName”:”TestUser1”,”Password”:”11223344”}

该请求查询用户TestUser1的自身用户记录详细信息。


3. UpdateUser

用途:

更新某些用户记录项的值,或添加/删除用户记录项。 如果某个项目包含在请求中,但未包含在原始记录中,则会将其添加到此记录中。 如果原始记录中包含未保留的项目,但请求中未包含该项目,则将从该记录中删除该项目。

必填项:

Func: “UpdateUser”

UserName: 发起请求的唯一用户名

Password (or PassHash): 参见第 1 节

ID: 需要更新的用户记录id,可以通过QueryUser请求获取

预定义项:

NewPassword(or NewPassHash): 当用户尝试通过UpdateUser请求更新自己的密码设置时,原始密码(或密码哈希)应设置为Password(或PassHash)项,新密码(或密码哈希)应设置为NewPassword(或NewPassHash)项。

保留项:

Client: 参见第 1 节

ID: 参见第 1 节

Datatype: 参见第 1 节

请求示例:

{“Func”:”UpdateUser”,”UserName”:”TestUser1”,”Password”:”11223344”,”Mobile”:”90218341”,”Email”:”aaa@xyz.com”,”NewPassword”:”12345678”}

此请求尝试将用户 TestUser1 的Email 项从abc@xyz.com 更改为 aaa@xyz.com,将密码更改为“12345678”,删除“Phone”项目,然后添加“Mobile”项目

4. QueryUserHistory

用途:

查询用户记录变更历史

必填项:

Func: “QueryUserHistory”

Key: 待检查的用户记录ID

UserName: 发起请求的唯一用户名

Password(or PassHash): 用户的密码或密码哈希字符串。 参见第 1 节

预定义项:

保留项:

请求示例:

{“Func”:”QueryUserHistory”,”Key”:”UR_202306121345901”,”UserName”:”TestUser2”,”Password”:”12345678”}

此请求意味着用户 TestUser2 尝试查询 ID 为 UR_202306121345901 的用户(应该是 TestUser2 本人)的整个更改历史记录。 响应是一个 JSON 列表格式字符串,包含用户 UR_202306121345901 的每条更改记录。


5. CreateRecord

用途:

在InfoChain中创建普通记录

必填项:

Func: “CreateRecord”

UserName: 发起请求的唯一用户名

Password (or PassHash): 参见第 1 节

RecordType: 记录类型可以标注为私有(Private)、受保护(Protected)或公共(Public)。 区别在于:

公共记录可由任何人查询,由任何注册用户更新;

受保护的记录只能由注册用户查询,只能由记录创建者和相关用户更新;

私有记录只能由记录创建者和相关用户查询和更新。

预定义项:

RelatedUsers: 可以编辑此记录的其他用户的用户名。 如果有多个相关用户,用“,”分割,例如:“TestUser1,TestUser2;TestUser3”

保留项:

Client: 参见第 1 节

ID: InfoChain生成的普通记录ID

Datatype: 强制编码为“Record”,由 InfoChain 设置

Creator: InfoChain使用Creator项来存储UserName项的值来记录该记录的创建者

请求示例:

{“Func”:”CreateRecord”,”RecordType”:”Protected”,”UserName”,”TestUser1”,”Password”:”12345678”,”Product_Name”:”P2P Chart Room”,”Product_Version”:”v1”,”LicenseNo”:”L34324252”,”RelatedUsers”:”TestUser2”}

该请求意味着用户TestUser1尝试创建一条受保护的记录,用于存储产品信息(产品名称为“P2P Chart Room”,产品版本为“v1”,许可证号为“L34324252”),该记录有一个相关的用户TestUser2也可以编辑此记录。

6. QueryRecord

用途:

按某些条件查询普通记录。

必填项:

Func: “QueryRecord”

UserName: 发起请求的唯一用户名。 如果 RecordType 不是 Public,则此项为必需。

Password (or PassHash): 发起请求的用户的密码(或密码哈希)。 如果 RecordType 不是 Public,则为此项为必填项

预定义项:

SearchClient: 如果想使用Client作为搜索条件,需要使用SearchClient来表示要搜索的Client项目

保留项:

请求示例:

{“Func”:”QueryRecord”,”RecordType”:”Public”,”Product_Type”:”Car”,”Product_Color”:”White”}

该请求意味着匿名用户尝试查询Product_Type为Car且Product_Color为White的所有公共记录。

{“Func”:”QueryRecord”,”RecordType”:”Protected”,”UserName”,”TestUser1”,”Password”:”12345678”}

此请求意味着用户 TestUser1 尝试查询所有受保护的记录。

{“Func”:”QueryRecord”,”RecordType”:”Private”,”UserName”,”TestUser1”,”Password”:”12345678”,"Product_Name":"ProdABC"}

此请求意味着用户 TestUser1 尝试查询由他创建或与他相关的 Product_Name 为 ProdABC 的私有记录。

7. UpdateRecord

用途:

根据记录ID更新一条记录。 对于公共记录,任何注册用户都可以更新; 对于受保护或私人记录,只有记录的创建者或相关用户才能更新它。

必填项:

Func:”UpdateRecord”

ID: 需要更新的记录ID,可以通过请求QueryRecord查询

UserName: 发起请求的唯一用户名

Password (or PassHash): 发起请求的用户的密码(或密码哈希)

预定义项:

RelatedUsers: 参阅第 5 节

保留项:

Creator: 参阅第 5 节

ModifiedBy: InfoChain将请求的UserName项存储为ModifiedBy项,以记录发起此更改的用户

RecordType: 用户无法更改记录的 RecordType。 请参阅第 5 节

Datatype: 参阅第 5 节

请求示例:

{“Func”:”UpdateRecord”,”ID”:”RC_20230507102340739””UserName”,”TestUser2”,”Password”:”12345678”,”Product_Name”:”P2P Chart Room”,”Product_Version”:”v1.1”,”New_Feature”:”Added TLS protection”, ”LicenseNo”:”L34324252”, ”RelatedUsers”:”TestUser2,TestUser3”}

该请求意味着用户TestUser2尝试更改第5节中创建的记录,将项目Product_Version更改为1.1,将相关用户更改为TestUser2和TestUser3,添加项目New_Feature

8. QueryMultipleRecords

用途:

同时查询多条记录

必填项

Func:“QueryMultipleRecords

ParamList:一个字符串化的JSON格式数组,每一项都是一个QueryRecord请求。 在请求项中,键“Func”可以忽略。 请参阅第 6 节。

注意:

ParamList 项可以设置为以下格式:“K1!K2”:“?” ,或“K1!K2@N”:“?”

第一个表达式主要表示此项的键 K1 的值是前一个请求的响应的键 K2 的值

第二个表达式主要表示该项的键 K1 的值是第 N 个执行请求的响应的键 K2 的值。 N从0开始。

请求示例:

{“Func”:”QueryMultipleRequests”,"ParamList":"[{\"产品名称\":\"P2P图表室\",\"产品版本\":\"v1.1\",\"用户名\": \"TestUser2\",\"密码\":\"12345678\"},{\"客户\":\"Mike\",\"年龄\":\"28\",\"用户名\": \"TestUser2\",\"密码\":\"12345678\"}] }"

该请求意味着用户TestUser2尝试查询2种类型的记录,第一条记录的Product_Name是“P2P Chart Room”,Product_Version是V1.1,第二条记录的Customer是“Mike”,年龄是28

{“Func”:”QueryMultipleRequests”,"ParamList":"[{\"产品名称\":\"P2P图表室\",\"产品版本\":\"v1.1\",\"用户名\": \"TestUser2\",\"密码\":\"12345678\"},{\"ProductID!ID\":\"?\",\"状态\":\"活动\",\"用户名\ ":\"TestUser2\",\"密码\":\"12345678\"}] }"

该请求意味着用户TestUser2尝试查询2种类型的记录,第一条记录的Product_Name是“P2P Chart Room”,Product_Version是V1.1,第二条记录的Key ProductID等于第一条记录的ID,并且Status是“Active”

9. UpdateMultipleRecords

用途:

同时查询或修改多条记录

必填项

Func:“UpdateMultipleRecords”

ParamList:一个字符串化的JSON格式数组,每一项都是一个QueryRecord请求。 在请求项中。 请参阅第 8 节。

注意:

ParamList 项可以设置为以下格式:“K1!K2”:“?” ,或“K1!K2@N”:“?”。 请参阅第 7 节。

请求示例:

{“Func”:”UpdateMultipleRequests”,"ParamList":"[{\"Func\":\"CreateRecord\",\"Product_Name\":\"P2P 会议室\",\"Product_version\":\" v1.2\",\"用户名\":\"TestUser2\",\"密码\":\"12345678\"},{\"Func\":\"UpdateRecord\",\"客户\": \"Mike\",\"状态\":\"活动\",\"用户名\":\"TestUser2\",\"密码\":\"12345678\"}] }"

该请求意味着用户TestUser2尝试创建一条记录,设置该记录的Product_Name为“P2P图表会议室”,Product_Version为V1.1,然后更新一条记录,将其Customer设置为“Mike”,Status设置为“Active”

{“Func”:“UpdateMultipleRequests”,“ParamList”:“[{\“Func \”:\“QueryRecord \”,\“Profit_Type \”:\“房子\”,\“地址\”:\“ST7, No3\",\"用户名\":\"TestUser2\",\"密码\":\"12345678\"},

{\"Func\":\"QueryRecord\",\"Product_Type\":\"Car\",\"Type\":\"T001\",\"UserName\":\"TestUser2\",\ "密码\":\"12345678\"},{\"Func\":\"UpdateRecord\",\"ID\":\"UC_202310310391\",\"BuyerName!Owner@0\":\"? \",\"应付!价格@1\":\"?\",\"状态\":\"发货\",\"用户名\":\"TestUser2\",\"密码\":\ “12345678\”}]}”

该请求意味着用户 TestUser2 尝试查询 2 条记录,第一条记录的 Profit_Type 为“House”,地址为“ST7,No3”,第二条记录的 Product_Type 为“Car”,Type 为“T001”,然后更新记录 UC_202310310391,设置其 BuyName作为第一条记录Owner字段的值,将Payable设置为第二条记录“Price”字段的值,将其Status设置为“Shipment”

10. QueryRecordHistory

用途:

查询普通记录变更历史

必填项:

Func: “QueryRecordHistory”

Key: 待检查的普通记录ID

UserName: 发起请求的唯一用户名

Password(or PassHash): 用户的密码或密码哈希字符串。 参见第 1 节

预定义项:

保留项:

请求示例:

{“Func”:”QueryRecordHistory”,”Key”:”RC_20230507102340739”,”UserName”:”TestUser2”,”Password”:”12345678”}

该请求意味着用户TestUser2尝试查询ID为RC_20230507102340739的普通记录的变更历史。 响应是一个 JSON 列表格式字符串,包含记录 RC_20230507102340739 的每条更改记录。