Rocket-api 调研

本文介绍了如何构建一个数据中台资产管理系统,核心功能是通过Rocket-API和Dataway将数据资产发布为API。系统支持SQL编辑,自动发布,版本控制,用户管理,动态数据源等功能。通过SQL或MongoDB脚本快速开发API,提高开发效率,同时具备在线调试,历史记录,安全性控制等特性。

 

最近在做数据中台资产管理系统,主要核心功能是数据资产发布成api或者文档,客户通过api直接获取发布的数据资产。需要一下一下几点功能:

1  界面sql编辑数据产品

2. 自动发布数据产品到api

调研后一段时间主要技术有Rocket-api和Dataway(hasor) https://www.hasor.net/doc/display/dataway

简介:

"Rocket-API" 基于spring boot 的API敏捷开发框架,通过写SQL或者 mongodb原始执行脚本代替CRUD完成开发。提升开发效率。

特性:

1. api配置化开发,不再定义Controller,Service,Dao,Mybatis,xml,Entity,VO等对象和方法.

2. 可视化界面,将入参自动封装到可执行脚本上,支持sql执行语句

3. 完全基于spring boot 2.x作为springboot项目的starter方式集成

4. 在线动态编译,无需重新,立即生效,多数据源操作(静态配置)

5.版本控制,历史记录,回滚功能

6. 代码提示:sql提示,语法提示

7. 远程一建发布到生产环境

8. 线上POSTMAN调试,保存POSTMAN信息或三方文档的自动生成,历史调用记录存储,回塑

9. 用户控制管理,安全性管理

10. 动态数据源管理

工作原理:

1.  将api信息保存到数据库,调用springboot的RequestMapperHandlerMapping.registerMapping/unregisterMapping 实现动态管理RequestMapping。

2. 依赖java 1.8的ScriptEngineManager方法,调用Groovy引擎,赋于数据处理能力以及使代码逻辑能够实现动态编译,发布,而不用重启

搭建:

源码地址: https://gitee.com/alenfive/rocket-api

需要下载2.3.5.RELEAS版本,最新亲测有bug

带入idea,修改application.yml文件的数据库信息

datasource:
  url: jdbc:mysql://xxxxxxx:3317/dap?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
  username: myuser
  password: mypassword
  driver-class-name: com.mysql.cj.jdbc.Driver

配置数据源:

@Component
public class DefaultDataSourceManager extends DataSourceManager {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Autowired
    private MongoTemplate mongoTemplate;

    @PostConstruct
    public void init() {
        Map<String, DataSourceDialect> dialects = new LinkedHashMap<>();
        dialects.put("mysql",new MySQLDataSource(jdbcTemplate,true));
        //dialects.put("postgres",new PostgreSQLDataSource(jdbcTemplate,false));
        //dialects.put("oracle",new OracleDataSource(jdbcTemplate,true));
//        dialects.put("mongodb",new MongoDataSource(mongoTemplate,true));
        super.setDialectMap(dialects);
    }
}

创建数据库:

CREATE TABLE `api_info` (
  `id` varchar(45) NOT NULL,
  `method` varchar(45) DEFAULT NULL,
  `path` varchar(100) DEFAULT NULL,
  `type` varchar(5) DEFAULT NULL COMMENT '类型:CODE,QL',
  `service` varchar(45) DEFAULT NULL,
  `editor` varchar(45) DEFAULT NULL,
  `name` varchar(200) DEFAULT NULL,
  `datasource` varchar(45) DEFAULT NULL,
  `script` text,
  `options` text,
  `create_time` varchar(45) DEFAULT NULL,
  `full_path` varchar(200) DEFAULT NULL,
  `directory_id` varchar(45) DEFAULT NULL,
  `update_time` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_path_method` (`service`,`full_path`,`method`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='路径明细';


CREATE TABLE `api_info_history` (
  `id` varchar(45) NOT NULL,
  `api_info_id` varchar(45) NOT NULL,
  `method` varchar(45) DEFAULT NULL,
  `path` varchar(100) DEFAULT NULL,
  `type` varchar(5) DEFAULT NULL COMMENT '类型:CODE,QL',
  `
### 如何在Linux系统上部署Rocket-API #### 准备工作 为了成功部署 Rocket-API,在开始之前需确认已安装并配置好必要的环境。这包括但不限于 Docker 和 Git 的安装,因为这些工具对于获取官方示例仓库和容器化应用程序至关重要。 确保Docker已经正确安装于Linux(CentOS)环境中[^2]。可以通过命令`docker --version`验证是否能够返回有效的版本号;同样地,Git也应处于可用状态以便克隆所需的GitHub库文件。 #### 获取源码 利用Git从Apache提供的官方地址下载最新的 `rocketmq-spring-boot-starter` 示例工程: ```bash git clone https://github.com/apache/rocketmq-spring.git cd rocketmq-spring/example/ ``` 此操作会拉取到最接近当前日期的稳定版代码,从而减少因API变动带来的兼容性问题[^1]。 #### 构建镜像 进入项目目录后,依据README文档中的指导完成Maven依赖项编译打包过程,并创建自定义Docker镜像: ```bash mvn clean package -Dmaven.test.skip=true dockerfile:build ``` 上述指令不仅完成了Java项目的构建流程还同步生成了一个基于OpenJDK基础映像的新容器镜像。 #### 启动服务 当一切准备就绪之后,就可以借助Docker Compose或者直接调用`docker run`启动新建立的服务端口了。假设想要以外部可访问的方式暴露HTTP API,则可以这样设置参数: ```bash docker run -d -p 8080:8080 your_custom_image_name ``` 这里的 `-p` 参数指定了主机与容器之间的端口映射关系,即外部请求可通过宿主机上的8080端口转发至内部相同编号的服务监听位置。 #### 验证部署成果 最后一步是测试API接口是否正常运作。打开浏览器或者其他HTTP客户端向刚才指定的URL发送GET请求,如http://localhost:8080/hello/world ,如果能收到预期响应则说明整个部署过程顺利完成。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值