如何遍历数据
所有的遍历接口和查询检索接口都支持下面两个参数:
参数名 | 参数类型 | 参数说明 | 必需 | 备注 |
---|---|---|---|---|
offset | integer | 响应结果起始下标 | 否 | 默认0 |
limit | integer | 响应结果的数量 | 否 | 默认50,最大1000 |
比如,当前有120条数据,limit默认为50,offset分别设置为0、50、100执行三次查询,分别返回第0~50、50~100、100~120条数据,就完成了遍历;或者当数据小于1000条时,将limit设置为1000即可返回全部数据。
查询的使用方法
查询接口的请求体结构是固定的,包含查询和排序两部分,使用类似于K-V的形式入参,结构如下所示:
参数名 | 参数类型 | 参数说明 | 必需 | 备注 |
---|---|---|---|---|
querys | array | 查询参数 | 否 | |
sorts | array | 排序参数 | 否 |
querys
参数名 | 参数类型 | 参数说明 | 必需 | 备注 |
---|---|---|---|---|
name | string | 属性名称 | 是 | |
op | string | 查询条件 | 是 | 支持:> , >= , = , < , <= , <> , like |
values | array | 值 | 是 | 内容是string 类型 |
每个请求的所支持name
不一致,请根据请求中的说明确认。
以”查询授权码“接口举例,name
支持sn
字段,查询SN1
和SN2
的数据,入参如下:
{
"name": "sn",
"op": "=",
"values": [
"SN1", "SN2"
]
}
查询参数可以使用多个条件筛选,会形成下面的结构:
{
"querys": [
{
"name": "foo",
"op": "=",
"values": [
"foo", "foo" ...
]
},
{
"name": "boo",
"op": ">",
"values": [
"boo", "boo" ...
]
}
...
]
}
sorts
参数名 | 参数类型 | 参数说明 | 必需 | 备注 |
---|---|---|---|---|
name | string | 属性名称 | 是 | |
order | string | 排序方式 | 否 | 支持:ASC (正序),DESC (倒序),默认ASC |
与查询参数一样,每个请求所支持的name
不一致,需要在请求说明中确认。
以”查询产品“接口举例,name
支持productName
字段,想要数据倒序返回,入参如下:
{
"name": "productName",
"order": "DESC"
}
同样,响应结果可以有多个排序条件,会形成下面的结构:
{
"sorts": [
{
"name": "foo"
},
{
"name": "boo",
"order": "DESC"
}
...
]
}
查询接口皆支持遍历数据,使用请求参数和请求体配合即可返回指定条件内的所有数据。
Scope使用方法
授权码接口可以通过在请求参数添加scope
返回更多的内容,包括产品、模版、业务、特征线、配置项等内容,返回的内容可以单独或组合指定,也可以将scope
设置为all
来获取所有可返回内容。
scope参数说明
参数(不区分大小写) | 对应内容 |
---|---|
product | 产品信息 |
template | 模版信息 |
business | 业务信息 |
feature | 关联的特征项 |
data | 配置项信息 |
machine | 激活的设备 |
all | 包含全部内容 |
入参使用空格作为间隔(例如scope=product business template),可重复输入但不允许输入不在上表范围内的参数;当输入包含all时,其他参数全部忽略。
示例
GET /bitanswer/api/sns?limit=1&scope=product business template HTTP/1.1
Host: back-office-api.bitanswer.cn
bitkey: ••••••
响应示例
{
"status": 0,
"data": {
"total": 999,
"items": [
{
"sn": "xxxxx",
"activeDate": "2023-09-11 09:59:33",
"status": 0,
"updateTime": "2024-07-02 15:57:11",
"regDate": "2023-09-11 09:59:33",
"type": "CLOUD",
"expirationDays": 123,
"concurrentNumber": 1,
"transferVolume": 0,
"transferNumber": 0,
"features": [
{
"id": 2,
"name": "test_fid_101_v_0",
"featureId": 101,
"value": 1110,
"source": "PRODUCT"
},
{
"id": 4,
"name": "test_fid_102_v_0",
"featureId": 102,
"value": 1110,
"source": "PRODUCT"
},
{
"id": 6,
"name": "test_fid_103_v_0",
"featureId": 103,
"value": 1110,
"source": "PRODUCT"
},
{
"id": 8,
"name": "test_fid_104_v_0",
"featureId": 104,
"expirationDays": 0,
"users": 0,
"value": 2220,
"source": "PRODUCT"
},
{
"id": 10,
"name": "test_fid_105_v_0",
"featureId": 105,
"expirationDays": 0,
"users": 0,
"value": 2220,
"source": "PRODUCT"
},
{
"id": 12,
"name": "test_fid_106_v_0",
"featureId": 106,
"expirationDays": 0,
"users": 0,
"value": 2220,
"source": "PRODUCT"
}
],
"data": [
{
"name": "unit_data_name_1",
"value": "unit_data_value_1",
"updateTime": "2022-12-02 10:13:49",
"status": 0,
"source": "template"
},
{
"name": "unit_data_name",
"value": "unit_data_value",
"updateTime": "2022-08-25 17:13:35",
"status": 0,
"source": "product"
},
{
"name": "unit_data_name_2",
"value": "unit_data_value_2",
"updateTime": "2022-12-02 10:13:49",
"status": 0,
"source": "template"
}
],
"product": {
"productName": "demo",
"productGuid": "xxx",
"description": "product description."
},
"business": {
"guid": "xxxxx",
"name": "unitTest_cloud",
"type": "CLOUD",
"description": "business description."
},
"template": {
"regDate": "2022-08-29 18:23:35",
"name": "unitTestTemplate1",
"status": 0,
"description": "template description."
},
"licenseBorrow": true,
"peak": 0
}
]
}
}
帐号授权专用Scope使用方法
scope参数说明
参数(不区分大小写) | 对应内容 |
---|---|
count | 返回结果中包含符合条件的结果数 |
basic | 返回含有详细信息的内容(默认basic) |
all | all表示内容比basic更详细 |
入参使用空格作为间隔(例如scope=count basic all),不可重复输入且但会忽略输入不在上表范围内的参数。
常见错误码
515 不合法的参数
1283 特征项没有找到
产生原因
- 无法从指定的特征项ID、名称等条件中找到唯一的特征项时会返回此错误码。对于产品而言是不存在;对于SN而言可能是未勾选特征项或通过fid查到但找到了多个特征项。
如何解决
-
使用
GET /products/{name}/features
获取产品所有的特征项信息,与输入内容对比。 -
使用
GET /sns/{sn}/features
获取授权码所有的特征项信息,与输入内容对比。
1537 指定的配置项没有找到
1832 未找到指定用户/客户
产生原因
- 使用用户名/客户名不查到对应的用户/客户。
1918 客户已存在
产生原因
- 当添加或修改客户时出现客户名或客户编号referenceId已存在时会返回此错误码。
1992 产品名已存在
1995 批量离线升级中有出错的
2305 指定的产品不存在
产生原因
- 当使用产品名查询不到产品时会返回此错误码
4123 不支持的查询项
产生原因
- 查询时请求体中的
querys
中name
输入的值不支持查询或sorts
中name
输入的值不支持排序。
如何解决
- 根据接口下表明的
querys
和sorts
支持的值进行修改。
5633 超过可分发的用户数
产生原因
-
集团可自由拆分的授权码在修改授权码用户数时,将用户数变小,但已经分配的用户数超过当前设置的用户数。
-
集团可自由拆分的授权码分配的设备在取消回收时,用户数不够。
如何解决
- 修改集团可自由拆分的授权码的用户数时,用户数需要大于等于已分配的用户数总和。
- 集团可自由拆分的授权码下的设备在取消回收时,修改设备的用户数在可用范围内。