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"
}
签名算法
- 请求参数转为 JSON 格式字符串后再参与签名计算,当请求参数为 null, undefined 时不参与签名运算
- 待签名字符串 =
${appSecret}${token}${method}${stringParams}${timestamp}
- 签名 = 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 类型的脚本。