# groovy-web-debug-editor **Repository Path**: podigua/groovy-web-debug-editor ## Basic Information - **Project Name**: groovy-web-debug-editor - **Description**: groovy语言的在线编辑器 ✅ 动态 API 发布 - 无需重启即可发布新接口 ✅ 脚本调试 - 单步执行、变量查看、表达式评估 ✅ 断点调试 - 点击设置断点,逐步调试 ✅ 代码提示 - 支持 Java 类、方法的智能提示 ✅ API 管理 - 查看、编辑、删除已发布的 API ✅ 数据持久化 - 使用 SQLite + MyBatis 存储 API 配置 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2026-05-22 - **Last Updated**: 2026-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 动态 API 发布与调试平台 基于 **Spring Boot + Groovy + Monaco Editor** 的动态接口发布系统。 ![](./assets/groovy-web-debug.gif) ## 🚀 快速开始 ### 1. 克隆项目 ### 2. 编译项目 ```bash mvn clean package ``` ### 3. 运行应用 ```bash mvn spring-boot:run ``` ### 4. 访问界面 打开浏览器访问:http://localhost:8080 ## 📚 完整文档 详细的使用文档请查看:**[project-doc/README.md](./project-doc/README.md)** ## ✨ 核心功能 - ✅ 动态 API 发布 - 无需重启即可发布新接口 - ✅ 在线脚本编辑 - Monaco Editor 提供专业编辑体验 - ✅ 脚本调试 - 单步执行、变量查看、表达式评估(基于 Groovy AST) - ✅ 断点调试 - 点击设置断点,逐步调试 - ✅ 代码提示 - 支持 Java 类、方法的智能提示 - ✅ 引用项目类 - Groovy 脚本可调用 Java 类和 Spring Bean - ✅ API 管理 - 查看、编辑、删除已发布的 API - ✅ 数据持久化 - 使用 SQLite + MyBatis 存储 API 配置 ## 🛠️ 技术栈 | 分类 | 技术 | 版本 | |------|------|------| | 后端框架 | Spring Boot | 2.7.18 | | 脚本引擎 | Groovy | 3.0.19 | | 前端编辑器 | Monaco Editor | 0.44.0 | | 数据库 | SQLite | 3.42.0 | | ORM | MyBatis | 2.1.2 | | JSON 处理 | Gson | 2.10.1 | | Java 版本 | JDK | 11+ | ## 📝 快速示例 ### 发布第一个 API 1. 访问 http://localhost:8080 2. 填写 API 路径:`/hello` 3. 选择 HTTP 方法:`GET` 4. 编写脚本(Groovy/Java 语法): ```java return "Hello, World!"; ``` 5. 点击"📤 发布 API" 6. 访问 http://localhost:8080/api/dynamic/hello 测试 ### 使用 Spring Bean ```java // 获取 Spring Bean def mapper = SpringBeanUtils.getBean("dynamicApiMapper") // 查询数据 def apis = mapper.selectAll() return apis ``` ### 调试脚本 1. 编写脚本 2. 填写测试数据(如需要) 3. 点击"🐛 开始调试" 4. 使用单步、继续、停止控制调试 5. 查看变量和评估表达式 ## 📂 项目结构 ``` groovy-debug/ ├── project-doc/ # 项目文档 │ ├── 01-需求文档/ # 需求规格说明书 │ ├── 02-产品设计/ # 产品设计和交互设计 │ ├── 03-功能设计/ # 系统架构和功能设计 │ ├── 04-详细设计/ # 详细设计和实现细节 │ └── 05-测试/ # 测试用例和测试指南 ├── src/ │ └── main/ │ ├── java/ # Java 源代码 │ │ └── com/example/dynamicapi/ │ │ ├── config/ # 配置类 │ │ ├── controller/ # REST API 控制器 │ │ ├── debug/ # Groovy AST 调试模块 │ │ ├── entity/ # 数据库实体 │ │ ├── handler/ # API 请求处理器 │ │ ├── mapper/ # MyBatis Mapper │ │ ├── model/ # 数据模型 │ │ ├── service/ # 业务服务 │ │ └── util/ # 工具类 │ └── resources/ │ ├── mapper/ # MyBatis XML 映射文件 │ └── static/ # 前端静态资源 ├── test.db # SQLite 数据库文件 ├── pom.xml # Maven 配置 └── .gitignore # Git 忽略文件 ``` ## 📁 核心模块说明 | 模块 | 说明 | 关键文件 | |------|------|----------| | **config** | 应用配置 | DatabaseConfig, GroovyAstConfig, WebConfig | | **controller** | REST API | DynamicApiController, AstDebugController, JavaClassMetadataController | | **debug** | Groovy AST 调试 | DebugAstTransform, DebugCompilationCustomizer, DebuggerCallback | | **handler** | 请求处理 | DynamicApiHandler | | **service** | 业务逻辑 | DynamicApiService, AstDebuggerService, JavaClassMetadataService, ApiFileStorageService | | **mapper** | 数据访问 | DynamicApiMapper | | **entity** | 数据库实体 | DynamicApi | ## ⚠️ 注意事项 1. **安全性**:当前实现允许执行任意 Groovy 脚本,生产环境需添加安全限制 2. **持久化**:API 定义存储在 SQLite 数据库中,重启后数据不会丢失 3. **并发**:使用数据库事务保证数据一致性 ## 🔒 生产环境建议 - 添加身份认证和授权 - 限制可访问的 Java 类 - 设置脚本执行超时 - 实现脚本沙箱机制 - 添加 API 调用频率限制 ## 📄 License MIT License --- **开始使用:** 查看详细文档 → [project-doc/README.md](./project-doc/README.md)