2. 环境搭建:Go语言环境安装、RESTGo框架安装、依赖管理、第一个压测脚本运行
本章是实战的起点。你将完成从零搭建一套完整的RESTGo压测环境,包括Go语言运行时、RESTGo框架、依赖管理工具,并成功运行第一个压测脚本。环境一致性是后续所有契约校验和性能分析的基础,请严格按照以下步骤操作。
2.1 Go语言环境安装
RESTGo基于Go 1.21+开发,推荐使用Go 1.22 LTS版本。安装前请确认操作系统架构(amd64/arm64)。
| 操作系统 | 安装方式 | 验证命令 |
|---|---|---|
| macOS (Intel/Apple Silicon) | brew install go@1.22 | go version |
| Ubuntu/Debian | sudo snap install go --classic | go version |
| Windows | 下载MSI安装包,勾选"添加到PATH" | go version |
| 手动安装(通用) | 下载tar.gz → 解压 → 设置GOROOT和GOPATH | go version |
环境变量检查:安装后执行
go env GOPATH 确认路径正确。建议将 $GOPATH/bin 加入系统PATH,后续安装的RESTGo CLI工具将自动可用。
2.2 RESTGo框架安装
RESTGo框架以Go模块形式发布,通过go install命令安装CLI工具和核心库。
# 安装RESTGo CLI工具(包含压测引擎、契约校验器、报告生成器)
go install github.com/restgo/restgo-cli@latest
# 验证安装
restgo version
# 预期输出示例
# RESTGo CLI v2.3.0 (build 2025-03-15)
版本锁定:生产环境建议使用
@v2.3.0 等具体版本号,避免因最新版API变更导致脚本不兼容。本课程所有示例基于v2.3.0。
2.3 依赖管理:Go Modules与RESTGo项目初始化
RESTGo项目使用Go Modules管理依赖。每个压测项目都是一个独立的Go模块。
# 创建项目目录
mkdir restgo-demo && cd restgo-demo
# 初始化Go模块
go mod init restgo-demo
# 添加RESTGo核心库依赖
go get github.com/restgo/restgo-core@latest
# 查看依赖树
go mod graph
依赖管理的关键文件说明:
| 文件/目录 | 作用 | 是否提交到Git |
|---|---|---|
go.mod | 模块定义和依赖声明 | 是 |
go.sum | 依赖哈希校验文件 | 是 |
vendor/ | 依赖本地缓存(可选) | 否(推荐使用代理) |
restgo.yaml | RESTGo项目配置文件 | 是 |
国内加速:如果遇到依赖下载超时,设置Go代理:
go env -w GOPROXY=https://goproxy.cn,direct
2.4 第一个压测脚本:结构解析与运行
RESTGo压测脚本采用声明式YAML + Go模板语法。下面是一个完整的压测脚本,对/api/health端点执行100次请求,并校验响应状态码和响应时间。
# health_check.yaml
apiVersion: restgo.io/v1
kind: LoadTest
metadata:
name: health-check
spec:
target:
baseURL: "https://api.example.com"
timeout: 5s
plan:
duration: 10s
concurrency: 10
rampUp: 2s
steps:
- name: check-health
request:
method: GET
path: /api/health
headers:
Accept: application/json
validate:
statusCode: 200
body:
- path: $.status
value: "ok"
performance:
maxLatency: 500ms
p99Latency: 300ms
运行脚本:
# 执行压测
restgo run health_check.yaml --report report.html
# 控制台实时输出示例
# [RESTGo] 2025-03-20 14:30:01 Starting load test: health-check
# [RESTGo] 2025-03-20 14:30:11 Completed: 100/100 requests
# [RESTGo] 2025-03-20 14:30:11 Avg latency: 45ms | P99: 120ms | Error rate: 0%
# [RESTGo] 2025-03-20 14:30:11 Report saved: report.html
首次运行建议:先使用
--dry-run 参数验证脚本语法:restgo run health_check.yaml --dry-run。该模式不会发送真实请求,只检查配置合法性。
2.5 环境搭建全流程架构
下图展示了从操作系统到压测脚本运行的整体依赖链路和工具链关系。
2.6 常见问题与避坑指南
- Go版本过低:RESTGo使用泛型和
slog包,要求Go 1.21+。运行go version确认,低于1.21请升级。 - CLI命令找不到:检查
$GOPATH/bin是否在PATH中。执行echo $PATH | grep -o 'go/bin'确认。 - 依赖下载失败:先设置代理
go env -w GOPROXY=https://goproxy.cn,direct,再重试go get。 - YAML缩进错误:RESTGo对缩进敏感,使用2空格缩进,禁止使用Tab。推荐VS Code + YAML插件。
- 端口被占用:如果本地启动Mock服务,确保端口未被占用。
lsof -i :8080检查。
环境验证清单:完成安装后,依次执行以下命令确认所有组件就绪:
go version → restgo version → go env GOPATH → restgo run health_check.yaml --dry-run