Skip to main content

平台接口客户端

介绍

平台客户端 SDK 用于访问平台接口,提供了平台接口的 Dotnet 实现, 可以很方便实现第三方系统与平台的集成。平台客户端 SDK 中包括常用的 租户管理项目管理用户管理角色管理工作表及数据管理系统变量(数据字典)报警管理 等接口, 并且不断在丰富和完善中。

使用方式

1.创建项目

  1. 创建项目C#控制台程序
  2. 创建 Programs.cs 文件

2. 引入SDK

  1. 添加nuget包,详细步骤见Dotnet sdk介绍-使用方式
  2. 引用命名空间
    using AiriotSDK.Data;
using AiriotSDK.Api;
using AiriotSDK.Tools;

3. 在需要调用平台接口创建客户端

在引入客户端 SDK 后. 示例代码如下:

static void Main(stirng[] args)
{
Config cfg = new()
{
ProjectId = "default",
Schema = "http",
Host = "127.0.0.1",
Port = 31000,
Credentials = new()
{
AK = "AK",
SK = "SK"
}
};

Client cli = new(cfg);
Query qr = new()
{
Filter = new Dictionary<string, object>
{
{ "title", "CoAP" },
},
Project = new Dictionary<string, object>
{
{ "id", 1},
{ "title", 1 }
}
};

string query = JsonConvert.SerializeObject(qr);

string tables = cli.FindTableQuery(query);

Console.WriteLine(tables);
}

查询构造器

客户端接口中的很多查询接口, 其结构比较复杂.

查询参数的整体结构如下所示:

{
"project": {},
"filter": {},
"sort": {},
"limit": 30,
"skip": 20,
"withCount": true
}

字段说明如下:

  • project 查询请求需要返回的字段列表. 例如: {"id": 1, "name": 1, "address": {"city": 1}}. key 为字段名, value1对象. 如果为为一级字段需要设置为 1 例如: {"id": 1, "name": 1}, 如果要返回嵌套对象内的字段, 则需要设置为 Map, 例如: {"address": {"city": 1}}
  • filter 查询条件, 如果没有添加任何条件则查询全部数据. key 为字段名, value 为过滤的值或逻辑运算符, 例如: {"name": "Tom", "age": {"$gt": 20, "$lt": 30}}.
  • sort 排序条件, key 为字段名, value1 表示升序, -1 表示降序, 例如: {"age": 1, "name": -1}.
  • limit 查询结果的最大数量, 可用于分页查询或限制返回的记录数量.
  • skip 查询结果的偏移量, 即忽略前 N 记录, 可用于分页查询.
  • withCount 是否返回符合条件的记录总数, 如果为 true 则会在查询结果记录数量会保存在响应对象 ResponseDTO<T> 中的 count 字段.
info

注意事项

  1. 如果查询条件需要使用逻辑或, 可以在 filter 中添加 $or 字段, 其值为 {k:v} 结构与 filter 一致, 任一条件成立时表示记录匹配.
  2. 如果同一字段存在多个逻辑条件, 则需要将多个条件放在一个 对象 中, 例如: {"age": {"$gt": 20, "$lt": 30}}, 表示查询 20 < age < 30 的记录. :::

逻辑运算符

符号说明示例
$not不相等, 与 SQL 中的 <> 作用相同{"age": {"$not": 18}}
$in在指定列表内, 与 SQL 中的 in 作用相同{"id": {"$in": [1,3,4]}}
$nin不在指定列表内, 与 SQL 中的 not in 作用相同{"id": {"$nin": [1,3,4]}}
$gt大于指定的值, 与 SQL 中的 > 作用相同{"age": {"$gt": 18}}
$gte大于等于指定的值, 与 SQL 中的 >= 作用相同{"age": {"$gte": 18}}
$lt小于指定的值, 与 SQL 中的 < 作用相同{"age": {"$lt": 18}}
$lte小于等于指定的值, 与 SQL 中的 <= 作用相同{"age": {"$lte": 18}}
$regex正则匹配, 与 SQL 中的 like 相似{"name": {"$regex": "张"}}