# pres-dubbo **Repository Path**: prestest/dubboTestTool ## Basic Information - **Project Name**: pres-dubbo - **Description**: 测试dubbo接口的小工具 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/prestest/dubboTestTool - **GVP Project**: No ## Statistics - **Stars**: 29 - **Forks**: 14 - **Created**: 2020-05-09 - **Last Updated**: 2026-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dubbo Test Tool 基于 Flask + ZooKeeper 的 Dubbo 接口测试工具,支持通过 ZooKeeper 自动发现服务或直接通过 IP:端口调用。 ## 功能特性 - 🔍 **自动服务发现** - 从 ZooKeeper 自动获取 Dubbo 服务列表 - 🔎 **智能搜索** - 支持服务和方法的实时模糊搜索 - 📝 **可视化编辑** - 友好的参数编辑界面,支持 JSON 格式 - 🌐 **本地调试** - 支持直接通过 IP:端口调用,无需 ZK - 💾 **配置持久化** - ZooKeeper 地址保存在浏览器 localStorage - ⌨️ **快捷键支持** - `Ctrl/Cmd + Enter` 快速提交 ## 快速开始 ### 1. 克隆项目 ```bash git clone https://github.com/yourname/dubboTestTool.git cd dubboTestTool ``` ### 2. 安装依赖 **使用 uv(推荐):** ```bash uv venv source .venv/bin/activate # Windows: .venv\Scripts\activate uv pip install -e . ``` **使用 pip:** ```bash pip install -r requirements.txt ``` ### 3. 启动服务 ```bash python app.py ``` 访问 http://localhost:5555 ### 4. 配置 ZooKeeper 首次使用时,点击左侧"设置"按钮,输入 ZooKeeper 地址: - 格式:`zk.host.com:2181` 或 `192.168.1.100:2181` - 配置会自动保存到浏览器 localStorage ## 使用指南 ### 通过 ZooKeeper 调用 1. 在左侧服务列表中搜索并选择 Dubbo 服务 2. 在方法下拉框中搜索并选择要测试的方法 3. 在参数框中输入请求参数(JSON 格式) 4. 点击"调用"按钮或按 `Ctrl/Cmd + Enter` 5. 右侧查看响应结果,支持一键复制 ### 参数格式说明 **基本类型:** ```json // 接口: getUser(String userId, Integer age) "user123", 25 ``` **对象类型:** ```json // 需要指定 class 属性 { "name": "zhangsan", "age": 12, "class": "com.example.User" } ``` **Map 类型:** ```json { "key1": "value1", "key2": 123, "class": "java.util.HashMap" } ``` ### 本地调试模式 直接通过 IP 和端口调用,无需 ZooKeeper: 1. 点击左侧"本地调试"菜单 2. 输入主机地址、端口、服务名、方法名 3. 可选:输入参数 4. 点击调用 主机地址和端口会自动保存,方便下次使用。 ## API 接口 ### 获取服务列表 ```http POST /api/services Content-Type: application/json { "zk_hosts": "zk.host.com:2181" } ``` 响应: ```json { "code": 200, "msg": "获取成功", "data": ["com.example.Service1", "com.example.Service2"] } ``` ### 获取服务信息 ```http POST /api/service-info Content-Type: application/json { "zk_hosts": "zk.host.com:2181", "service": "com.example.UserService" } ``` 响应: ```json { "code": 200, "msg": "获取成功", "data": { "host": "192.168.1.100", "port": "20880", "service": "com.example.UserService", "method": ["getUser", "saveUser"] } } ``` ### 调用 Dubbo 服务 ```http POST /api/dubbo/invoke Content-Type: application/json { "host": "192.168.1.100", "port": 20880, "service": "com.example.UserService", "method": "getUser", "args": "\"user123\"" } ``` 或使用 ZK 自动发现: ```http POST /api/dubbo/invoke Content-Type: application/json { "zk_hosts": "zk.host.com:2181", "service": "com.example.UserService", "method": "getUser", "args": "\"user123\"" } ``` ## 项目结构 ``` dubboTestTool/ ├── app.py # Flask 应用入口 ├── utils/ # 工具模块 │ ├── __init__.py │ ├── zookeeper_client.py # ZooKeeper 客户端 │ └── dubbo_client.py # Dubbo 调用封装 ├── templates/ # HTML 模板 │ ├── base.html │ ├── dubbo.html │ ├── local.html │ └── error.html ├── static/ # 静态资源 │ ├── style.css # 样式文件 │ ├── app.js # 交互逻辑 │ └── image/ # 图片资源 ├── requirements.txt # 依赖列表 └── pyproject.toml # 项目配置 ``` ## 技术栈 - **后端**: Python + Flask + Kazoo + prestool - **前端**: 原生 HTML/CSS/JS(无框架依赖) - **通信**: Dubbo Telnet 协议 ## 开发 ```bash # 安装开发依赖 pip install -e ".[dev]" # 代码格式化 black . # 运行测试 pytest ``` ## License MIT