插件的最简洁写法

81 阅读2分钟

把数据库表的增删改查写成接口,用户不用会写sql语句通过接口传参的方式操作数据库,让普通用户也可以写流程插件。

以下是优化后的接口设计,将操作映射为语义化的接口地址,并保持参数简洁,用户无需区分底层是数据库操作还是内部方法:


1. 新增用户 (语义化接口)

接口地址POST /api/adduser
参数结构

{
  "name": "John",
  "age": 30,
  "email": "john@example.com"
}

用法
直接传递用户字段,接口隐含 table=usersaction=create,自动生成 INSERT 语句。


2. 删除用户 (语义化接口)

接口地址DELETE /api/deleteuser
参数结构

{
  "where": {
    "id": 1001  // 支持单条件或多条件
  }
}

用法
通过 where 指定删除条件,接口隐含 table=usersaction=delete


3. 修改用户 (语义化接口)

接口地址PUT /api/updateuser
参数结构

{
  "data": { "age": 31 },  // 更新字段
  "where": { "id": 1001 } // 条件
}

用法
传递需更新的字段和条件,接口隐含 table=usersaction=update


4. 查询用户 (语义化接口)

接口地址GET /api/selectuser
参数结构(支持 Query ParametersBody):

{
  "fields": ["id", "name"], // 可选字段(默认全部)
  "where": { "age": { "gt": 20 } }, // 条件
  "orderBy": { "age": "desc" },      // 排序
  "page": 1,                         // 页码
  "pageSize": 10                     // 每页数量
}

用法

  • 支持通过 where 指定复杂条件(如 >, <, like 等)
  • 分页参数自动转换为 LIMITOFFSET

更简化的场景用法

示例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"
}

优势

  1. 语义清晰:接口地址直接表明用途(如 adduser/selectuser),无需理解数据库表名。
  2. 参数极简:隐藏 actiontable 字段,用户只需关注业务参数。
  3. 灵活扩展:保留 where 支持复杂查询,同时提供极简模式(如直接传 id)。
  4. 符合 RESTful 风格:通过 HTTP Method(GET/POST/PUT/DELETE)区分操作类型。

用户只需记住少量接口地址,按业务场景传参即可完成操作!