斑斑低代码对外开放 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;">meta</font> 一些元数据(可扩展)<font style="background-color:#f9ddb2;">error</font> 错误信息(可选)key 和 secret 可以在工作台的管理后台中获取。

需要 Key-Secret 校验的请求,需要发送以下请求参数(GET 传参):
| 参数 | 类型 | 说明 |
|---|---|---|
| key | 字符串 | 工作台-管理后台中获取的 key |
| timestamp | 时间戳 | 10 位或 13 位时间戳。服务端会校验时间,相差超过 60 秒会拒绝访问。 |
| sign | 字符串 | 加密字符串。服务端会校验加密算法,校验失败会拒绝访问。加密算法为:md5(key + timestamp + secret) |
比如 key 为vPQLpCHlXNKu,secret 为RaCBog1j8ruflI14amyeqYXm,则请求时的参数为:
key=vPQLpCHlXNKu×tamp=1757391409&sign=36c0e2bbb0514d8df5144bda04f94765
以下示例中,4j815fmhht0j是应用 ID,articles是表单别名。
GET http://localhost:43334/api/v1/4j815fmhht0j/articles
1234567891011121314151617181920212223242526{ "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
12345678910{ "data": { "id": "stykuonikdfl", "title": "Biscotte Restaurant", "内容": "", "updateTime": 1752047397644, "createTime": 1752047397644 }, "meta": {}}
POST http://localhost:43334/api/v1/4j815fmhht0j/articles
123456{ "data": { "title": "Biscotte Restaurant", "内容": "" }}
12345678910{ "data": { "id": "stykuonikdfl", "title": "Biscotte Restaurant", "内容": "", "updateTime": 1752047397644, "createTime": 1752047397644 }, "meta": {}}
PUT http://localhost:43334/api/v1/4j815fmhht0j/articles/stykuonikdfl
123456{ "data": { "title": "Biscotte Restaurant", "内容": "" }}
12345678910{ "data": { "id": "stykuonikdfl", "title": "Biscotte Restaurant", "内容": "", "updateTime": 1752047397644, "createTime": 1752047397644 }, "meta": {}}
DELETE http://localhost:43334/api/v1/4j815fmhht0j/articles/stykuonikdfl 成功时仅返回状态码 204,无响应体
GET /api/v1/:appId/:formId?filters[:field][:operator]=:value
| 操作 | 描述 |
|---|---|
$eq | 相等 |
$ne | 不相等 |
$lt | 小于 |
$lte | 小于或等于 |
$gt | 大于 |
$gte | 大于或等于 |
$in | 包含在数组中 |
$nin | 不包含在数组中 |
$exists | 是否存在 |
$or | 或 |
$and | 且 |
$not | 非 |
可以用参数fields选择返回哪些字段,默认会返回除关系、子表之外的所有字段。
| 用法 | 示例 |
|---|---|
| 选择单个字段 | fields=name |
| 选择多个字段 | fields[0]=name&fields[1]=description |
REST API 默认不会返回关系字段、子表字段,可以用参数populate来填充。
| 用法 | 示例 |
|---|---|
| 填充所有字段 | populate=* |
| 填充一个字段 | populate=a-relation-name |
| 填充多个字段 | populate[0]=relation-name&populate[1]=another-relation-name&populate[2]=yet-another-relation-name |
可以通过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 正序 |
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> |
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 |