把数据库表的增删改查写成接口,用户不用会写sql语句通过接口传参的方式操作数据库,让普通用户也可以写流程插件。
以下是优化后的接口设计,将操作映射为语义化的接口地址,并保持参数简洁,用户无需区分底层是数据库操作还是内部方法:
1. 新增用户 (语义化接口)
接口地址:POST /api/adduser
参数结构:
{
"name": "John",
"age": 30,
"email": "john@example.com"
}
用法:
直接传递用户字段,接口隐含 table=users 和 action=create,自动生成 INSERT 语句。
2. 删除用户 (语义化接口)
接口地址:DELETE /api/deleteuser
参数结构:
{
"where": {
"id": 1001 // 支持单条件或多条件
}
}
用法:
通过 where 指定删除条件,接口隐含 table=users 和 action=delete。
3. 修改用户 (语义化接口)
接口地址:PUT /api/updateuser
参数结构:
{
"data": { "age": 31 }, // 更新字段
"where": { "id": 1001 } // 条件
}
用法:
传递需更新的字段和条件,接口隐含 table=users 和 action=update。
4. 查询用户 (语义化接口)
接口地址:GET /api/selectuser
参数结构(支持 Query Parameters 或 Body):
{
"fields": ["id", "name"], // 可选字段(默认全部)
"where": { "age": { "gt": 20 } }, // 条件
"orderBy": { "age": "desc" }, // 排序
"page": 1, // 页码
"pageSize": 10 // 每页数量
}
用法:
- 支持通过
where指定复杂条件(如>,<,like等) - 分页参数自动转换为
LIMIT和OFFSET。
更简化的场景用法
示例1:查询所有活跃用户(通过 Query Parameters)
请求:
GET /api/selectuser?where={"status":"active"}&orderBy={"age":"desc"}
示例2:根据ID删除用户(极简模式)
请求:
DELETE /api/deleteuser
Body: { "id": 1001 } // 允许直接传 `id` 代替 `where`
示例3:模糊查询姓名
请求:
GET /api/selectuser
Body: {
"where": { "name": { "like": "%张%" } }
}
统一返回格式
{
"success": true,
"code": 200,
"data": [/* 结果或影响行数 */],
"message": "ok"
}
优势:
- 语义清晰:接口地址直接表明用途(如
adduser/selectuser),无需理解数据库表名。 - 参数极简:隐藏
action和table字段,用户只需关注业务参数。 - 灵活扩展:保留
where支持复杂查询,同时提供极简模式(如直接传id)。 - 符合 RESTful 风格:通过 HTTP Method(GET/POST/PUT/DELETE)区分操作类型。
用户只需记住少量接口地址,按业务场景传参即可完成操作!