API 调试器
API 调试器从服务端读取 Open API 元数据(operationId、方法、路径、参数),在控制台里选接口、填参数、按 AppSecret 计算签名并试调。它适合联调,不是生产网关;没有保存请求历史或环境变量管理。
概念
- 元数据来自
GET /api/admin/api-metadata,由服务端从 Open API IDL 派生,与文档同源。 - 签名规则:
Signature = hex(sha1(appSecret + nonce + timestamp)),请求头App-Key/Nonce/Timestamp/Signature。 - AppSecret 只在浏览器内存中使用,不落 localStorage;刷新页面需重新输入(或由控制台当前应用取用)。
- 试调会真实写数据(如发消息、建群),请使用测试应用与测试用户。
不要在生产应用上随意试调
调试器发的是真实请求,可能产生消息、用户、群等数据;对生产应用执行写接口前请确认影响范围。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#debug(tab#debug:API 调试器)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
步骤
- 选择接口
按 operationId 搜索,确认 method/path 与参数。
- 填参数与密钥
按参数表填写 JSON;AppSecret 仅用于本地签名。
- 计算签名并发送
控制台自动生成 Nonce/Timestamp 与 Signature;发送后查看
code/msg/data。 - 失败排查
1018=签名错误、1019=时间戳过期、1020=Nonce 重放;先校准本机时间。
参数表
| 操作 | 方法与路径 | 参数 |
|---|---|---|
| 接口元数据 | GET /api/admin/api-metadata | — |
| OpenAPI 导出 | GET /openapi.json | — |
| 实际试调 | {basePath}{path} | App-Key/Nonce/Timestamp/Signature + 接口参数 |
示例
拉取接口元数据
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/api-metadata" \
-H 'X-Admin-Secret: dev-admin'
# 只看单聊发布
curl -sS -X GET "http://127.0.0.1:8080/api/admin/api-metadata" \
-H 'X-Admin-Secret: dev-admin' | jq '.data.operations[] | select(.operationId=="message.private.publish")'手写一次签名调用
Shell
# 应用服务器示例(Node):timestamp 毫秒、nonce 随机串
node -e "const c=require('crypto');const s='<appSecret>',n='n1',t=Date.now();\
console.log(c.createHash('sha1').update(s+n+t).digest('hex'))"常见问题
调试器会保存请求历史吗?
不会。刷新或切换 tab 后参数不保留;需要回归请用脚本或 OpenAPI 导出。
AppSecret 安全吗?
只在本页内存中使用;但浏览器环境仍应使用测试应用,不要把生产密钥交给不可信机器。
为什么一直 1018?
签名串顺序是 appSecret+nonce+timestamp,timestamp 为毫秒;确认没有被代理改写请求头。
能调管理 API 吗?
调试器面向 Open API;管理 API 直接在「运营后台」或 curl 使用 X-Admin-Secret。