1 个不稳定版本

0.1.0 2023年2月18日

#368 in 可视化

MIT 许可证

48KB
1K SLoC

Rust 896 SLoC JavaScript 134 SLoC Tera 131 SLoC // 0.0% comments

Diagramer

一个基于 Rust🦀 和 rocket🚀 的序列图生成 webservice。

特性

  • 快速简单的 JSON-API
  • SVG 导出
  • Mermaid 图表代码导出
  • 小型前端,支持实时更新
  • 客户端实现

使用方法

直接启动 diagramer

cargo run

或通过以下方式构建发布版本:

cargo build --release

API 使用

使用客户端

客户端库在模块 diagramer::client 中实现。

use diagramer::client::Client;

let client = Client::new();
let session = client.new_session("https://127.0.0.1:8000").await;
println!("New session url {}", session.session_url()); 
session.add_link("a", "b", Some("Request")).await;
session.add_link("b", "c", Some("Forward")).await;
session.add_link("c", "a", Some("Response")).await;

基于网络的压力测试也使用了客户端实现。

直接 HTTP 访问

创建一个新会话

curl -XPOST 'http://127.0.0.1:8000/api/new-session'

使用会话 ID 和会话的 URI

{
  "id": "2888964795923373081",
  "uri": "/api/session/2888964795923373081"
}

a 添加到 b 的链接,标签为 with a label

curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:8000/api/session/2888964795923373081/links' -d '{"from":"a", "to":"b", "label":"with a label"}'

获取会话的 JSON 表示形式

curl 'http://127.0.0.1:8000/api/session/2888964795923373081'
{
  "id": 2888964795923373000,
  "links": [
    {
      "timestamp": 1676679312120,
      "from": "a",
      "to": "b",
      "label": "with a label",
      "id": 2
    }
  ],
  "last_link": 2,
  "mermaid_url": "/api/session/2888964795923373081/mermaid",
  "svg_url": "/api/session/2888964795923373081/svg"
}

依赖项

~30–68MB
~1M SLoC