Skip to content

OpenAPI 接入说明

Instant API 的原始运行态接口有三种常见入口:

入口路径规则鉴权请求体覆盖范围
WebAPI/api/{appCode}/{datasetCode}/{method}Cookie直接传业务参数支持 9 个核心 Instant API
Client API/client/{appCode}/{datasetCode}/{method}个人身份认证,X-User-AK直接传业务参数支持 9 个核心 Instant API
OpenAPI/openapi/data/{method}HMAC Header{ appCode, datasetCode, paramMap }paramList支持部分数据操作

如果目标是“把 9 个 Instant API 都 curl 一遍”,优先看 Instant API:9 个原始接口与 Node.js SDK 封装,其中使用的是 WebAPI 原始路径。

1. OpenAPI 的定位

OpenAPI 是给外部系统、服务端任务、Agent 网关、低代码平台使用的 HMAC 签名入口。它不依赖用户 Cookie,适合服务端到服务端调用。

OpenAPI 不是 WebAPI 的逐项同名镜像。当前 Node.js SDK 的 OpenAPI 模式使用这些路径:

Instant APIOpenAPI 路径请求体形态支持情况
filter/openapi/data/filter{ appCode, datasetCode, paramMap }支持
aggregate/openapi/data/aggregate{ appCode, datasetCode, paramMap }支持
getOne/openapi/data/get-one{ appCode, datasetCode, paramMap: { id } }支持
create/openapi/data/create{ appCode, datasetCode, paramMap }支持
batchCreate/openapi/data/batch-create{ appCode, datasetCode, paramList }支持
update/openapi/data/update{ appCode, datasetCode, paramMap }支持
delete--暂不支持
getSelectOptions--暂不支持
excelExport--暂不支持

2. 原始 OpenAPI curl 形态

Bash
export RUNTIME_DOMAIN="https://runtime.lovrabet.com"
export APP_CODE="app_xxx"
export DATASET_CODE="dataset_xxx"
export TIMESTAMP="$(date +%s000)"
export TOKEN="hmac-token-generated-by-server"
Bash
curl -X POST "$RUNTIME_DOMAIN/openapi/data/filter" \
  -H "Content-Type: application/json" \
  -H "X-Time-Stamp: $TIMESTAMP" \
  -H "X-App-Code: $APP_CODE" \
  -H "X-Dataset-Code: $DATASET_CODE" \
  -H "X-Token: $TOKEN" \
  -d '{
    "appCode": "'"$APP_CODE"'",
    "datasetCode": "'"$DATASET_CODE"'",
    "paramMap": {
      "where": { "status": { "$eq": "paid" } },
      "currentPage": 1,
      "pageSize": 20
    }
  }'

TOKEN 由服务端根据 AccessKey、时间戳、appCode、datasetCode 生成。不要把 AccessKey 写入前端代码、公开仓库或日志。

3. Node.js SDK 封装

使用 OpenAPI 模式时,SDK 会自动生成签名并切到 /openapi/data/{method}

TypeScript
import { createClient } from "@lovrabet/sdk";

const client = createClient({
  appCode: process.env.LOVRABET_APP_CODE,
  authMode: "openapi",
  accessKey: process.env.LOVRABET_ACCESS_KEY,
  runtimeDomain: process.env.LOVRABET_RUNTIME_DOMAIN || "https://runtime.lovrabet.com",
  models: [
    {
      tableName: "orders",
      datasetCode: process.env.LOVRABET_DATASET_CODE!,
      alias: "orders",
    },
  ],
});

const result = await client.models.orders.filter({
  where: { status: { $eq: "paid" } },
  currentPage: 1,
  pageSize: 20,
});

如果需要调用 deletegetSelectOptionsexcelExport,不要使用 OpenAPI 模式,改用 WebAPI Cookie 或 Client API。

4. 详细参考

文档用途
OpenAPIOpenAPI 认证、签名、路径、请求体和完整接口说明
TypeScript SDKNode.js / TypeScript SDK 的完整接入和 SDK 方法说明
Java SDKJava 服务端 SDK 的完整接入和调用示例

基于飞书知识库同步生成,内容以飞书源文档为准