跳到主要内容

Luwak API 规范

调用规范

大体遵循 JSON-RPC 2.0 规范,为增强安全性做了适当修改。

主要修改包括:

  • 增加 metas 保存公共参数,支持签名和时间戳校验。
  • 移除 id 为空的情况,不支持通知请求。
  • 在响应对象中的错误对象上增加 status 提供字符串类型的错误状态,这提高了错误码的可读性。

请求示例

{
"jsonrpc": "2.0",
"method": "smartPanda.mdh.brand.getByUK",
"params": {
"id": 2
},
"metas": {
"token": "44ea16b7-3aa1-41a5-81da-8ee9d2b840c2",
"signature": "aa6bc887f49bc1b16d92e98d6a4d6457",
"appKey": "NSEA4ETIpBlyB2l9",
"timestamp": 1740466996616
},
"id": "15a5f50d-1f26-4c37-8fb4-04d3411db8d3"
}
签名算法
  1. 请求参数转为 JSON 格式字符串后再参与签名计算,当请求参数为 null, undefined 时不参与签名运算
  2. 待签名字符串 = ${appSecret}${token}${method}${stringParams}${timestamp}
  3. 签名 = MD5(待签名字符串)

响应示例

{
"jsonrpc": "2.0",
"result": {
"id": 2,
"name": "Luwak"
},
"id": "15a5f50d-1f26-4c37-8fb4-04d3411db8d3"
}

发生错误时的响应示例

{
"jsonrpc": "2.0",
"error": {
"code": 10423,
"status": "BE.SQL.Prepare",
"message": "failed to prepare SQL query: [input error]: unique key column(s) do not match table meta"
},
"id": "15a5f50d-1f26-4c37-8fb4-04d3411db8d3"
}

命名规范

Fixed API 的名称的后缀是固定的。

API 名称的格式是 ${entity}.${suffix}。定义好 entity 之后,无需编写任何代码即可使用 Fixed API。

Fixed API CRUD

一部分常见的高频使用的 Fixed API 有

Create

  • add 创建一条
  • addBatch 批量创建多条

Read

  • get 根据主键获取一条
  • getByUK 根据唯一键获取一条
  • getBatchBy 根据主键获取多条
  • select 获取多条,支持分页、过滤、排序

Update

  • set 根据主键更新一条
  • setBatchBy 根据主键更新多条

Delete

  • del 删除一条
  • delBatch 根据主键列表批量删除多条
信息

请阅读相关章节获取完整列表。

Magic API CRUD

Magic API 的名称的后缀是动态的。

API 名称的格式是 ${entity}.${dynamicSuffix}。定义好 entity 之后,无需编写任何代码即可使用 Magic API。

信息

请阅读相关章节获取详细信息。

自定义 API

自定义的 API 也需要遵循 ${entity}.${suffix} 格式,如果后缀与 Fixed/Magic API 重名,则表示覆盖内置 API 的行为。

自定义 API 必须指定 Entity,必须包含一个 Main 类型的脚本。

脚本

在脚本中可以使用 luwak.dao("entityName.suffix", "params") 方法操作数据库。