跳转到内容

面板托管接口

这四条是 rha dashboard 子命令背后的东西。日常用命令行就够了,直接调接口的场景 是自动化流水线,或者让 agent 自己把画好的页面传上去。

命令 接口
rha dashboard list GET /api/dashboards
rha dashboard push PUT /api/dashboards/{name}
rha dashboard rm DELETE /api/dashboards/{name}
rha dashboard rollback POST /api/dashboards/{name}/rollback

全部只认 Bearer,会话 cookie 在这里一律 401:面板内容是能在浏览器里执行的 JS,cookie 泄漏不该能改它。

怎么写一个面板、页面里怎么调 /api/*,见自建面板。

请求体是未压缩的 tar 流,不是 JSON,包里必须有 index.html:

Terminal window
tar -cf - -C ./my-panel . | curl -s -X PUT \
-H "Authorization: Bearer $RHA_TOKEN" \
-H 'Content-Type: application/x-tar' \
--data-binary @- \
http://127.0.0.1:8420/api/dashboards/home | jq .

先解到临时目录,全部成功才改名生效。任一步失败,当前正在用的那一版原封不动 —— 传坏了不会把已经在用的面板搞没。

回滚只保留一份上一版:回滚一次之后再回滚就没有可回的了,返回 404。

GET/api/dashboards

认证:Bearer token

返回面板名的数组, 按字典序。对应 rha dashboard list。

返回

成功时 data 字段的形状:

string 的数组。

错误

  • 500 —— 读面板目录失败
PUT/api/dashboards/{name}

认证:Bearer token

请求体是未压缩的 tar 流(Content-Type: application/x-tar), 不是 JSON。包里必须有 index.html。对应 rha dashboard push。

上传是原子的: 先解到 staging, 全部成功才改名生效; 任一步失败, 当前正在用的那一版原封不动。

有大小上限, 超了在解包之前就被拒 —— 否则请求体本身就是无界的, 任何人都能在解包有机会拒绝之前把内存吃光。

参数

参数位置类型说明
name*路径string

面板名, 也是它的访问路径 /d/<name>/

返回

成功时 data 字段的形状:

一个对象:
字段类型说明
name*string

被操作的面板名。

错误

  • 400 —— 面板名不合法 / 不是合法 tar / 包里没有 index.html / 超出大小上限
  • 500 —— 写盘失败
DELETE/api/dashboards/{name}

认证:Bearer token

连同它的历史版本一起删, 删完 /d/<name>/ 返回 404。对应 rha dashboard rm。

参数

参数位置类型说明
name*路径string

面板名

返回

成功时 data 字段的形状:

一个对象:
字段类型说明
name*string

被操作的面板名。

错误

  • 400 —— 面板名不合法
  • 404 —— 没有这个面板
  • 500 —— 删除失败
POST/api/dashboards/{name}/rollback

认证:Bearer token

只保留一份上一版 —— 回滚一次之后再回滚就没有可回的了, 返回 404。对应 rha dashboard rollback。

参数

参数位置类型说明
name*路径string

面板名

返回

成功时 data 字段的形状:

一个对象:
字段类型说明
name*string

被操作的面板名。

错误

  • 400 —— 面板名不合法
  • 404 —— 没有这个面板, 或它没有可回滚的上一版
  • 500 —— 回滚失败