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 的每条更改记录。
©2023