面板托管接口
这四条是 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/*,见自建面板。
上传是原子的
Section titled “上传是原子的”请求体是未压缩的 tar 流,不是 JSON,包里必须有 index.html:
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。
/api/dashboards认证:Bearer token
返回面板名的数组, 按字典序。对应 rha dashboard list。
返回
成功时 data 字段的形状:
string 的数组。
错误
500—— 读面板目录失败
/api/dashboards/{name}认证:Bearer token
请求体是未压缩的 tar 流(Content-Type: application/x-tar), 不是 JSON。包里必须有 index.html。对应 rha dashboard push。
上传是原子的: 先解到 staging, 全部成功才改名生效; 任一步失败, 当前正在用的那一版原封不动。
有大小上限, 超了在解包之前就被拒 —— 否则请求体本身就是无界的, 任何人都能在解包有机会拒绝之前把内存吃光。
参数
| 参数 | 位置 | 类型 | 说明 |
|---|---|---|---|
name* | 路径 | string | 面板名, 也是它的访问路径 |
返回
成功时 data 字段的形状:
| 字段 | 类型 | 说明 |
|---|---|---|
name* | string | 被操作的面板名。 |
错误
400—— 面板名不合法 / 不是合法 tar / 包里没有 index.html / 超出大小上限500—— 写盘失败
/api/dashboards/{name}认证:Bearer token
连同它的历史版本一起删, 删完 /d/<name>/ 返回 404。对应 rha dashboard rm。
参数
| 参数 | 位置 | 类型 | 说明 |
|---|---|---|---|
name* | 路径 | string | 面板名 |
返回
成功时 data 字段的形状:
| 字段 | 类型 | 说明 |
|---|---|---|
name* | string | 被操作的面板名。 |
错误
400—— 面板名不合法404—— 没有这个面板500—— 删除失败
/api/dashboards/{name}/rollback认证:Bearer token
只保留一份上一版 —— 回滚一次之后再回滚就没有可回的了, 返回 404。对应 rha dashboard rollback。
参数
| 参数 | 位置 | 类型 | 说明 |
|---|---|---|---|
name* | 路径 | string | 面板名 |
返回
成功时 data 字段的形状:
| 字段 | 类型 | 说明 |
|---|---|---|
name* | string | 被操作的面板名。 |
错误
400—— 面板名不合法404—— 没有这个面板, 或它没有可回滚的上一版500—— 回滚失败