斑斑低代码

API设置(REST API)

斑斑低代码对外开放 API,你可以通过 API 访问斑斑的表单数据。

API 设置

打开应用,点击右上角“应用设置”。

点击左侧“API 设置”,可以进入设置界面。开启 API 服务后,当前应用的数据即可通过下方的 API 地址进行访问。

API 列表

Method URL 描述
GET /api/v1/:appId 获取应用内的所有表单
GET /api/v1/:appId/:formId 获取数据列表
GET /api/v1/:appId/:formId/:docId 获取单条数据
GET /api/v1/:appId/:formId/toc 以目录树结构返回数据列表
POST /api/v1/:appId/:formId 创建一条数据
PUT /api/v1/:appId/:formId/:docId 修改一条数据
DELETE /api/v1/:appId/:formId/:docId 删除一条数据

其中,appId为应用 ID,formId为表单 ID(或表单别名),docId为数据 ID。

数据返回格式

返回数据包含以下字段:

  • <font style="background-color:#f9ddb2;">data</font> 数据本身,可能有以下情况:
    • 单条数据,包含以下字段:
      • <font style="background-color:#f9ddb2;">id</font>``string
      • <font style="background-color:#f9ddb2;">updateTime</font>``int 时间戳
      • <font style="background-color:#f9ddb2;">createTime</font>``int 时间戳
      • <font style="background-color:#f9ddb2;">title</font> 表单中定义的字段 title
      • <font style="background-color:#f9ddb2;">description</font> 表单中定义的字段 description
      • … 表单中用户定义的其他字段,直接用字段的标题作为 key,可以是中文。
    • 列表数据,上述单条数据组成的数组
  • <font style="background-color:#f9ddb2;">meta</font> 一些元数据(可扩展)
    • <font style="background-color:#f9ddb2;">pagination</font> 分页信息(可选)
      • <font style="background-color:#f9ddb2;">page</font>``int页数
      • <font style="background-color:#f9ddb2;">pageSize</font>``int分页大小
      • <font style="background-color:#f9ddb2;">pageCount</font>``int总页数
      • <font style="background-color:#f9ddb2;">total</font>``int数据总条数
  • <font style="background-color:#f9ddb2;">error</font> 错误信息(可选)
    • <font style="background-color:#f9ddb2;">code</font>``int 错误码
    • <font style="background-color:#f9ddb2;">name</font>``string 错误类型
    • <font style="background-color:#f9ddb2;">message</font>``string 错误信息
    • <font style="background-color:#f9ddb2;">details</font>``object 详细信息

Key-Secret 校验

获取 key-secret

key 和 secret 可以在工作台的管理后台中获取。

请求参数

需要 Key-Secret 校验的请求,需要发送以下请求参数(GET 传参):

参数 类型 说明
key 字符串 工作台-管理后台中获取的 key
timestamp 时间戳 10 位或 13 位时间戳。服务端会校验时间,相差超过 60 秒会拒绝访问。
sign 字符串 加密字符串。服务端会校验加密算法,校验失败会拒绝访问。加密算法为:md5(key + timestamp + secret)

比如 key 为vPQLpCHlXNKu,secret 为RaCBog1j8ruflI14amyeqYXm,则请求时的参数为:

key=vPQLpCHlXNKu&timestamp=1757391409&sign=36c0e2bbb0514d8df5144bda04f94765

请求示例

以下示例中,4j815fmhht0j是应用 ID,articles是表单别名。

获取列表数据

GET http://localhost:43334/api/v1/4j815fmhht0j/articles

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"data": [
{
"id": "u2i3s0pi1no7",
"title": "BMK Paris Bamako",
"内容": "",
"updateTime": 1752047397644,
"createTime": 1752047397644
},
{
"id": "stykuonikdfl",
"title": "Biscotte Restaurant",
"内容": "",
"updateTime": 1752047397644,
"createTime": 1752047397644
}
],
"meta": {
"pagination": {
"page": 1,
"pageSize": 25,
"pageCount": 1,
"total": 2
}
}
}

获取单条数据

GET http://localhost:43334/api/v1/4j815fmhht0j/articles/stykuonikdfl

1
2
3
4
5
6
7
8
9
10
{
"data": {
"id": "stykuonikdfl",
"title": "Biscotte Restaurant",
"内容": "",
"updateTime": 1752047397644,
"createTime": 1752047397644
},
"meta": {}
}

新增一条数据

POST http://localhost:43334/api/v1/4j815fmhht0j/articles

1
2
3
4
5
6
{
"data": {
"title": "Biscotte Restaurant",
"内容": ""
}
}
1
2
3
4
5
6
7
8
9
10
{
"data": {
"id": "stykuonikdfl",
"title": "Biscotte Restaurant",
"内容": "",
"updateTime": 1752047397644,
"createTime": 1752047397644
},
"meta": {}
}

修改一条数据

PUT http://localhost:43334/api/v1/4j815fmhht0j/articles/stykuonikdfl

1
2
3
4
5
6
{
"data": {
"title": "Biscotte Restaurant",
"内容": ""
}
}
1
2
3
4
5
6
7
8
9
10
{
"data": {
"id": "stykuonikdfl",
"title": "Biscotte Restaurant",
"内容": "",
"updateTime": 1752047397644,
"createTime": 1752047397644
},
"meta": {}
}

删除一条数据

DELETE http://localhost:43334/api/v1/4j815fmhht0j/articles/stykuonikdfl 成功时仅返回状态码 204,无响应体

请求参数

数据过滤(Filters)

GET /api/v1/:appId/:formId?filters[:field][:operator]=:value

操作 描述
$eq 相等
$ne 不相等
$lt 小于
$lte 小于或等于
$gt 大于
$gte 大于或等于
$in 包含在数组中
$nin 不包含在数组中
$exists 是否存在
$or
$and
$not

选择字段(Field selection)

可以用参数fields选择返回哪些字段,默认会返回除关系、子表之外的所有字段。

用法 示例
选择单个字段 fields=name
选择多个字段 fields[0]=name&fields[1]=description

字段填充(Field Population)

REST API 默认不会返回关系字段、子表字段,可以用参数populate来填充。

用法 示例
填充所有字段 populate=*
填充一个字段 populate=a-relation-name
填充多个字段 populate[0]=relation-name&populate[1]=another-relation-name&populate[2]=yet-another-relation-name

排序(Sorting)

可以通过sort参数对数据进行排序。:asc为正序(默认方式,可不写),:desc为倒序。

用法 示例
单个字段排序 <font style="color:rgb(74, 74, 106);">sort=name</font> 按 name 正序
多个字段排序 sort[0]=name&sort[1]=description 先按 name 正序,再按 description 正序
单个字段倒序 sort=name:desc 按 name 倒序
多字段混合排序 sort[0]=name:desc&sort[1]=description 先按 name 倒序,再按 description 正序

分页(Pagination)

通过 page 分页

GET /api/v1/:appId/:formId?pagination[page]=1&pagination[pageSize]=10

参数 类型 描述 默认值
pagination[page] Integer 第几页 <font style="color:rgb(74, 74, 106);">1</font>
pagination[pageSize] Integer 每页条数 <font style="color:rgb(74, 74, 106);background-color:rgba(220, 220, 228, 0.243);">25</font>
pagination[withCount] Boolean 是否返回总条数和总页数 <font style="color:rgb(74, 74, 106);">true</font>

通过 offset 分页

GET /api/v1/:appId/:formId?pagination[start]=0&pagination[limit]=10

参数 类型 描述 默认值
pagination[start] Integer 起始下标 <font style="color:rgb(74, 74, 106);">0</font>
pagination[limit] Integer 查询条数 <font style="color:rgb(74, 74, 106);background-color:rgba(220, 220, 228, 0.243);">25</font>
pagination[withCount] Boolean 是否返回数据总条数 true