golang从Chrome/Firefox网络检查生成PlantUML图表插件hoofli的使用
hoofli - 从Chrome/Firefox网络检查生成PlantUML图表
hoofli是一个Golang工具,可以从Chrome或Firefox的网络检查数据生成PlantUML格式的图表。
安装
使用以下命令安装hoofli:
$ go install github.com/dnnrly/hoofli/cmd/hoofli
使用说明
该工具读取存储在本地磁盘上的浏览器HAR文件,并将它们转换为PlantUML格式的文件。你需要从PlantUML官网下载PlantUML或使用你选择的包管理工具安装。
运行测试
单元测试
$ make test
验收测试
$ make deps
$ make build acceptance-test
重要的make目标
install
- 从当前工作树安装hooflibuild
- 构建hoofliclean
- 从工作树中移除构建产物clean-deps
- 移除工作树中的依赖项test-deps
- CI目标 - 安装测试依赖项build-deps
- CI目标 - 安装构建依赖项deps
- CI目标 - 安装构建和测试依赖项test
- 运行单元测试并使用tparse美化输出acceptance-test
- 对构建的hoofli运行验收测试ci-test
- CI目标 - 运行单元测试lint
- 运行代码检查release
- CI目标 - 发布hoofliupdate
- 更新依赖项help
- 显示帮助信息
示例用法
以下是一个完整的示例,展示如何使用hoofli从HAR文件生成PlantUML图表:
package main
import (
"fmt"
"os"
"github.com/dnnrly/hoofli/pkg/har"
"github.com/dnnrly/hoofli/pkg/plantuml"
)
func main() {
// 读取HAR文件
harFile, err := os.Open("example.har")
if err != nil {
fmt.Printf("Error opening HAR file: %v\n", err)
os.Exit(1)
}
defer harFile.Close()
// 解析HAR文件
harData, err := har.Parse(harFile)
if err != nil {
fmt.Printf("Error parsing HAR file: %v\n", err)
os.Exit(1)
}
// 生成PlantUML图表
puml := plantuml.Generate(harData)
// 输出或保存PlantUML代码
fmt.Println(puml)
// 也可以保存到文件
err = os.WriteFile("diagram.puml", []byte(puml), 0644)
if err != nil {
fmt.Printf("Error writing PlantUML file: %v\n", err)
os.Exit(1)
}
fmt.Println("PlantUML diagram generated successfully!")
}
贡献
请阅读CONTRIBUTING.md了解我们的行为准则以及向我们提交拉取请求的流程。
版本控制
我们使用SemVer进行版本控制。有关可用版本,请查看仓库中的标签。
作者
- Pascal Dennerly - 初始工作 - dnnrly
许可证
该项目采用Apache 2.0许可证 - 详见LICENSE文件。
更多关于golang从Chrome/Firefox网络检查生成PlantUML图表插件hoofli的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang从Chrome/Firefox网络检查生成PlantUML图表插件hoofli的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用hoofli从Chrome/Firefox网络检查生成PlantUML图表
hoofli是一个实用的工具,它可以将Chrome/Firefox开发者工具中的网络请求数据转换为PlantUML序列图,帮助开发者可视化分析Web应用的请求流程。
安装hoofli
首先需要安装hoofli工具:
go install github.com/digitalocean/hoofli@latest
基本使用方法
1. 从浏览器导出HAR文件
- 在Chrome/Firefox中打开开发者工具(F12)
- 切换到"Network"选项卡
- 进行页面操作(加载页面、点击按钮等)
- 右键点击网络请求列表,选择"Save as HAR with content"
2. 使用hoofli生成PlantUML
hoofli -har yourfile.har -out diagram.puml
这会生成一个PlantUML文件,你可以使用PlantUML工具或在线查看器渲染它。
高级用法示例
过滤特定请求
package main
import (
"log"
"os"
"github.com/digitalocean/hoofli"
)
func main() {
// 读取HAR文件
harData, err := os.ReadFile("network.har")
if err != nil {
log.Fatal(err)
}
// 创建hoofli解析器
parser, err := hoofli.NewParserFromHAR(harData)
if err != nil {
log.Fatal(err)
}
// 设置过滤条件 - 只包含API请求
filter := hoofli.Filter{
URLPattern: "/api/*",
}
// 生成PlantUML
plantUML, err := parser.ToPlantUML(filter)
if err != nil {
log.Fatal(err)
}
// 保存到文件
err = os.WriteFile("api_sequence.puml", []byte(plantUML), 0644)
if err != nil {
log.Fatal(err)
}
}
自定义输出格式
# 只显示请求方法
hoofli -har yourfile.har -show-method
# 显示请求和响应头
hoofli -har yourfile.har -show-headers
# 组合多个选项
hoofli -har yourfile.har -show-method -show-status -out custom.puml
集成到开发流程
你可以将hoofli集成到自动化测试中,自动生成请求序列图:
package main
import (
"fmt"
"os/exec"
"testing"
)
func TestAPIFlow(t *testing.T) {
// 运行测试前启动Chrome并记录HAR
// 测试代码...
// 测试完成后生成PlantUML
cmd := exec.Command("hoofli", "-har", "test_har.har", "-out", "test_flow.puml")
err := cmd.Run()
if err != nil {
t.Errorf("Failed to generate PlantUML: %v", err)
}
fmt.Println("API flow diagram generated: test_flow.puml")
}
可视化结果
生成的PlantUML文件可以使用以下方式查看:
- 使用PlantUML官方工具:https://plantuml.com/
- 使用VS Code插件:PlantUML
- 使用在线查看器:https://www.planttext.com/
实际应用场景
- API文档:自动生成API调用序列图
- 性能分析:可视化请求瀑布图,识别瓶颈
- 调试:理解复杂的前后端交互流程
- 测试验证:确保测试覆盖了所有关键请求路径
hoofli是一个轻量级但功能强大的工具,特别适合需要分析和文档化Web应用请求流程的开发者和架构师。