# rocket-api
**Repository Path**: yuanxuegui/rocket-api
## Basic Information
- **Project Name**: rocket-api
- **Description**: API敏捷开发框架,用于API接口功能的快速开发。不再定义Controller,Service,Dao,Mybatis,xml,Entity,VO等对象和方法.以springboot starter 形式集成使用
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: https://gitee.com/alenfive/rocket-api
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 744
- **Created**: 2026-04-04
- **Last Updated**: 2026-04-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# NovaCloud RocketAPI
**数据服务开发平台 - 让API开发更简单、更高效**
[](https://www.oracle.com/java/)
[](https://spring.io/projects/spring-boot)
[](http://groovy-lang.org/)
[]()
[](LICENSE)
---
## 📖 项目简介
NovaCloud RocketAPI 是一个基于 Spring Boot 的低代码 API 敏捷开发框架,通过可视化界面和脚本引擎,将传统的 Controller-Service-Dao 三层架构简化为只需编写 SQL 或 Groovy 脚本即可完成 API 开发。
### 核心价值
- **拒绝重复 CRUD**:50% 以上的功能只需编写 SQL 或 MongoDB 查询语句
- **标准化开发**:统一的 API 规范、返回格式、异常处理
- **高效交付**:服务端研发效率提升 300%-500%,人力成本减少 3 倍
- **低门槛**:测试人员或运维人员也可参与简单 API 开发
- **动态热更**:在线修改、即时生效,无需重启服务
### 适用场景
✅ **适合**:
- 数据查询类 API(报表、统计、列表)
- 简单的 CRUD 操作
- 快速原型开发
- 内部管理系统
- 数据集成与转换
❌ **不适合**:
- 复杂业务逻辑(建议用传统 Java 开发)
- 高性能要求场景(Groovy 有性能损耗)
- 需要精细控制的底层接口
---
## ✨ 核心特性
### 🚀 快速开发
- **零样板代码**:无需定义 `Controller`、`Service`、`Dao`、`MyBatis`、`XML`、`Entity`、`VO` 等对象和方法
- **脚本驱动**:50% 以上的功能只需编写 SQL 或 MongoDB 原始执行脚本即可完成开发
- **一行代码**:大部分业务需求仅需一行代码即可实现
- **低门槛**:测试人员或运维人员也可参与 API 开发
### 💻 可视化界面
- **图形化配置**:可视化界面管理 API,入参自动封装到可执行脚本
- **多数据库支持**:支持所有关系型数据库 SQL 语句和非关系型 MongoDB 查询语句
- **智能提示**:提供代码提示、SQL 提示、语法提示功能
- **在线调试**:内置 POSTMAN 调试工具,支持保存调试信息和自动生成文档
### 🔧 动态热更新
- **即时生效**:在线动态编译,无需重启服务
- **远程发布**:一键发布到线上环境
- **版本控制**:支持历史记录比对、回滚等功能
- **历史追溯**:保存历史调用记录,便于问题回溯
### 🛡️ 安全与权限
- **用户管理**:完善的用户管理和权限控制
- **行为审计**:记录历史操作行为
- **Sa-Token 集成**:基于 Sa-Token 的安全认证机制
- **多租户支持**:支持多租户架构
### 📊 监控与统计
- **API 监控**:实时监控 API 访问情况
- **统计分析**:提供 API 调用统计数据
- **报表生成**:自动生成 API 使用报表
- **数据脱敏**:支持敏感数据脱敏处理
### 🌐 多数据源支持
- **关系型数据库**:MySQL、PostgreSQL、Oracle、SQL Server、DB2、KingBase、ClickHouse
- **非关系型数据库**:MongoDB、ElasticSearch
- **大数据引擎**:Presto
- **动态切换**:支持运行时动态数据源管理
---
## 🏗️ 技术架构
### 工作原理
1. **动态路由注册**
- 将 API 信息、请求方式、请求路径、处理逻辑存储于数据库中
- 调用 Spring Boot 提供的 `RequestMappingHandlerMapping.registerMapping/unregisterMapping` 实现动态管理 RequestMapping
2. **脚本引擎**
- 基于 Java 1.8+ 提供的 `ScriptEngineManager` 方法
- 调用 Groovy 引擎赋予数据处理能力
- 实现代码逻辑的动态编译和发布,无需重启服务
3. **Starter 集成**
- 以 Spring Boot Starter 形式集成到业务项目中
- 无侵入性,新老项目都能快速集成
### 技术栈
- **核心框架**:Spring Boot(继承自 novacloud-framework 父 POM)
- **脚本引擎**:Apache Groovy 4.0.24
- **数据库迁移**:Liquibase
- **模板引擎**:Thymeleaf
- **安全认证**:Sa-Token
- **多租户**:NovaCloud Tenant
- **构建工具**:Maven 3.6+
- **JDK 版本**:Java 17+
---
## 🚦 快速开始
### 前置要求
- JDK 17 或更高版本
- Maven 3.6+
- MySQL 5.7+ / PostgreSQL 12+(或其他支持的数据库)
### 安装步骤
#### 1. 克隆项目
```bash
git clone https://your-repo/novacloud-rocketapi.git
cd novacloud-rocketapi
```
#### 2. 配置数据库
在 `src/main/resources/application-dev.yml` 中配置数据库连接:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/rocketapi?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
```
#### 3. 编译打包
```bash
mvn clean install -DskipTests
```
#### 4. 启动应用
```bash
mvn spring-boot:run
```
或者直接运行打包后的 JAR 文件:
```bash
java -jar target/novacloud-rocketapi-5.2.0-SNAPSHOT.jar
```
#### 5. 访问管理界面
启动成功后,访问:`http://localhost:8081/rocketapi`
默认端口为 8081,可在配置文件中修改。
---
## 📝 使用指南
### 一、独立运行模式
#### 1. 登录管理界面
启动应用后,访问:`http://localhost:8081/rocketapi`
首次使用会自动初始化数据库表结构(通过 Liquibase),无需手动建表。
#### 2. 创建第一个 API
**步骤 1:新建 API**
- 点击左侧菜单"API 管理" → "新建 API"
- 填写基本信息:
- **名称**:用户列表查询
- **路径**:`/user/list`
- **请求方式**:GET
- **服务名称**:数据服务
- **数据源**:default(默认数据源)
- **类型**:QL(SQL 模式)或 CODE(Groovy 代码模式)
**步骤 2:编写脚本**
**SQL 模式(推荐简单查询)**:
```sql
SELECT * FROM users WHERE status = :status
```
参数说明:
- `:status` - 从请求参数中自动获取,支持路径参数、查询参数、请求体参数
- SQL 模式下自动识别增删改查操作
- 支持分页:访问 `/user/list/page?pageSize=10&pageNumber=1`
**Groovy 代码模式(复杂业务逻辑)**:
```groovy
// 简单查询
def result = db.find("SELECT * FROM users WHERE id = :id", [id: params.id])
return result
// 条件查询
def status = params.status ?: 1
def list = db.find("SELECT * FROM users WHERE status = :status", [status: status])
return [code: 200, data: list, total: list.size()]
// 插入操作
def id = db.insert("INSERT INTO users(name, email) VALUES(:name, :email)", [
name: params.name,
email: params.email
])
return [code: 200, message: "创建成功", id: id]
// 更新操作
def count = db.update("UPDATE users SET name = :name WHERE id = :id", [
name: params.name,
id: params.id
])
return [code: 200, affected: count]
// 删除操作
def count = db.remove("DELETE FROM users WHERE id = :id", [id: params.id])
return [code: 200, deleted: count]
```
**步骤 3:测试 API**
- 点击右侧"调试"标签页
- 填写测试参数
- 点击"发送"按钮查看返回结果
- 查看执行日志和 SQL 语句
**步骤 4:发布 API**
- 测试通过后,点击"发布"按钮
- API 立即生效,无需重启服务
- 可通过 `http://localhost:8081/api/user/list` 访问
---
### 二、集成到现有 Spring Boot 项目
#### 1. 添加 Maven 依赖
```xml
com.hyhy.novacloud
novacloud-rocketapi
5.2.0-SNAPSHOT
```
#### 2. 配置数据源
在 `application.yml` 中配置主数据源:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/rocketapi?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
# RocketAPI 配置
rocket-api:
service-name: my-service # 服务名称(用于数据隔离)
base-register-path: /rocketapi # 管理界面访问路径
service-title: 我的 API 平台 # 页面标题
secret-key: your-secret-key # 远程发布密钥
view-enabled: true # 是否启用管理界面
sync-enabled: true # 是否启用远程发布
```
#### 3. 配置多数据源(可选)
如需使用多个数据源,在管理界面的"数据源管理"中配置:
```yaml
# 示例:PostgreSQL 数据源配置
{
"name": "pg-datasource",
"driverClassName": "org.postgresql.Driver",
"url": "jdbc:postgresql://localhost:5432/mydb",
"username": "postgres",
"password": "password"
}
```
在脚本中切换数据源:
```groovy
// 使用指定数据源查询
def result = db.find("SELECT * FROM users", "pg-datasource")
return result
```
#### 4. 启动应用
确保主类添加了必要的注解:
```java
@SpringBootApplication
@EnableScheduling // 如果需要定时检测数据源连接
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
```
启动后访问:`http://localhost:8080/rocketapi`(端口根据你的配置)
---
### 三、脚本开发详解
#### 1. 内置函数库
RocketAPI 提供了丰富的内置函数,可直接在脚本中使用:
**数据库操作(db)**:
```groovy
// ✅ 查询列表(返回 List