logo
0
0
WeChat Login
feat: 完成API测试平台开发和前端界面

API测试学习平台

这是一个基于 Gin 框架实现的接口测试学习和压测学习平台。

功能模块

1. 用户模块 (/api/user)

  • 注册 - POST /api/user/register
  • 登录 - POST /api/user/login
  • 获取用户信息 - GET /api/user/user_info (需要token)
  • 修改用户信息 - POST /api/user/user_change (需要token)
  • 修改密码 - POST /api/user/change_password (需要token)
  • 退出登录 - POST /api/user/logout (需要token)

2. 变色龙模块 - 接口管理 (/api/chameleon)

  • 获取公共代码 - GET /api/chameleon/public_param (需要token)
  • 提交公共代码 - POST /api/chameleon/public_param (需要token)
  • 获取接口分类列表 - GET /api/chameleon/interface_category (需要token)
  • 新增接口分类 - POST /api/chameleon/interface_category (需要token)
  • 修改接口分类 - PUT /api/chameleon/interface_category (需要token)
  • 删除接口分类 - DELETE /api/chameleon/interface_category (需要token)
  • 获取接口列表 - GET /api/chameleon/interface (需要token)
  • 新增接口 - POST /api/chameleon/interface (需要token)
  • 修改接口 - PUT /api/chameleon/interface (需要token)
  • 删除接口 - DELETE /api/chameleon/interface (需要token)
  • 批量删除接口 - POST /api/chameleon/interface_batch_delete (需要token)

3. 测试工具模块 (/api/qa_tools)

  • 接口加解密 - POST /api/qa_tools/encrypt_decrypt (需要token)
  • 接口签名生成 - POST /api/qa_tools/create_sign (需要token)
  • 四要素生成 - GET /api/qa_tools/person_info (需要token)
  • 获取kabin信息 - GET /api/qa_tools/kabin_info
  • mock接口数据构造 - GET /api/qa_tools/interface_mock (需要token)

4. 麻雀模块 - 学生管理 (/api/sparrow)

  • 获取学生列表 - GET /api/sparrow/student
  • 新增学生 - POST /api/sparrow/student
  • 新增学生(加密) - POST /api/sparrow/student_encrypt (需要token)
  • 新增学生(需要签名) - POST /api/sparrow/student_sign

技术栈

  • 框架: Gin (Go Web Framework)
  • 数据库: SQLite
  • ORM: GORM
  • 认证: JWT (JSON Web Token)
  • 加密: AES-GCM
  • 签名: MD5

项目结构

api-test-platform/ ├── config/ # 配置和数据库模型 │ └── config.go ├── controllers/ # 控制器 │ ├── user_controller.go │ ├── chameleon_controller.go │ ├── qatools_controller.go │ └── sparrow_controller.go ├── middleware/ # 中间件 │ └── auth.go ├── routes/ # 路由 │ └── router.go ├── utils/ # 工具函数 │ ├── response.go │ ├── jwt.go │ ├── encrypt.go │ └── random.go ├── main.go # 主程序入口 ├── go.mod # Go模块文件 └── README.md # 项目文档

快速开始

1. 安装依赖

go mod tidy

2. 编译项目

go build -o api-test-platform main.go

3. 运行项目

./api-test-platform

服务将在 http://localhost:8080 启动

4. 默认账号

  • 手机号: 18612532945
  • 邮箱: admin@qq.com
  • 昵称: 水壶
  • 密码: 123456 (MD5: 7da387a4cf65ab80356f8e4e38f1c290)

API使用示例

用户注册

curl -X POST http://localhost:8080/api/user/register \ -H "Content-Type: application/json" \ -d '{ "phone": "13800138000", "email": "test@qq.com", "nick": "测试用户", "password": "123456", "password2": "123456" }'

用户登录

curl -X POST http://localhost:8080/api/user/login \ -H "Content-Type: application/json" \ -d '{ "username": "13800138000", "password": "123456" }'

响应会返回 token,后续请求需要在 Header 中携带 token。

获取用户信息

curl -X GET http://localhost:8080/api/user/user_info \ -H "token: <your-token-here>"

新增学生

curl -X POST http://localhost:8080/api/sparrow/student \ -H "Content-Type: application/json" \ -d '{ "name": "张三", "grade": "一年级", "phone": "13900139000", "age": 18, "sex": "男" }'

接口加解密

# 加密 curl -X POST http://localhost:8080/api/qa_tools/encrypt_decrypt \ -H "Content-Type: application/json" \ -H "token: <your-token-here>" \ -d '{ "type": 1, "data": "hello world" }' # 解密 curl -X POST http://localhost:8080/api/qa_tools/encrypt_decrypt \ -H "Content-Type: application/json" \ -H "token: <your-token-here>" \ -d '{ "type": 2, "data": "<encrypted-data>" }'

生成签名

curl -X POST http://localhost:8080/api/qa_tools/create_sign \ -H "Content-Type: application/json" \ -H "token: <your-token-here>" \ -d '{ "name": "张三", "age": 18 }'

四要素生成

curl -X GET "http://localhost:8080/api/qa_tools/person_info?bank_code=ICBC&card_type=DC" \ -H "token: <your-token-here>"

特性说明

1. Token认证

  • 登录/注册成功后会返回 token
  • 后续需要认证的接口需要在请求头中携带 token
  • Token 有效期为 24 小时

2. 数据加密

  • 使用 AES-GCM 进行数据加密
  • 接口请求和响应可以加密传输
  • 密钥配置在 config.go 中

3. 签名验证

  • 支持接口签名验证
  • 签名算法: MD5(参数+密钥)
  • 密钥配置在 config.go 中

4. 分页查询

  • 支持 page 和 limit 参数
  • 默认每页 20 条
  • 支持模糊搜索

压测学习

本项目适合用于接口测试和压测学习,可以使用以下工具进行压测:

  1. Apache Bench (ab)
ab -n 1000 -c 100 http://localhost:8080/api/sparrow/student
  1. wrk
wrk -t12 -c400 -d30s http://localhost:8080/api/sparrow/student
  1. JMeter
  • 创建 HTTP 请求
  • 配置线程组和循环次数
  • 查看结果
  1. Locust
from locust import HttpUser, task, between class APIUser(HttpUser): wait_time = between(1, 3) @task def get_student_list(self): self.client.get("/api/sparrow/student")

配置说明

config/config.go 中可以修改以下配置:

type ServerConfig struct { Port string // 服务端口,默认 8080 RunMode string // 运行模式: debug/release } type SecretConfig struct { JwtSecret string // JWT 密钥 EncryptKey string // AES 加密密钥 SignKey string // 签名密钥 } type DatabaseConfig struct { Type string // 数据库类型 Path string // 数据库文件路径 }

注意事项

  1. 生产环境请修改默认密钥
  2. Token 有效期可根据需求调整
  3. 数据库文件会自动创建在项目根目录
  4. 首次运行会创建默认管理员账号

许可证

MIT License