您的当前位置:首页>全部文章>文章详情

介绍一款 API 敏捷开发工具

发表于:2024-01-21 14:57:26浏览:207次TAG: #开源系统

作者:棒锤🐮

原文链接:https://xie.infoq.cn/article/b5c3a339267e1351c6151b42a

初衷

用尽可能简单的方式,完成尽可能多的需求。通过约定的方式 实现统一的标准。告别加班,拒绝重复劳动,远离搬砖

特性

  1. 用于快速开发 API 接口。不再定义Controller,Service,Dao,Mybatis,xml,Entity,VO等对象和方法.

  2. 可视化界面,将入参自动封装到可执行的脚本上,支持所有关系性数据库 SQL 执行语句,非关系型MONGODB查询语句.欢迎扩展

  3. 完全基于 springboot2.x 作为 springboot 项目的 stater 方式集成,无侵入性,新老项目都能快速集成

  4. 只需编写一行代码即可完成大部分的业务需求开发,使用难度级别(测试 or 运维)也可参与开发

  5. 在线动态编译,无需重启,即时生效,多数据源操作

  6. 版本控制,历史记录比对,回滚等功能

  7. 远程一键发布到线上环境

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

  9. 代码提示,SQL 提示,语法提示

  10. 用户管理控制,安全性控制,以及历史行为记录

  11. 经过多次项目验证,传统业务型开发,服务端效率能够提升 3-5 倍,前后端联调提升效率 1 倍,测试效率 2 倍提升

传统开发步骤

  1. 增加一张表

  2. 创建实体对象,映射这张表

  3. 创建 API 入参 VO

  4. 创建 API 出参 VO

  5. 创建 Controller

  6. 创建 Service

  7. 创建 Dao

  8. 创建 Mapper, xml 或者 JPA

  9. 在 mysql 客户端,或者 mongo 客户端中写执行脚本语句,复制到代码中

  10. 反复重启,进行接口自测

  11. 编写 API 文档

  12. 完成一个功能点开发

 

使用一些工具比如 mybatis plus,jpa,或者 idea 的 Easy code,MybatisCodeHelperPro 等可以一键生成一些基于单表的操作的相关代码,但是业务场景来说,可能喜欢更灵活,代码执行效率更高的一些操作方式,并且一个项目开发中,从来不仅仅是单表的一些操作操作

 

市面上就上面的这些问题,提供了 APIJSON 和 GraphQL 等解决方案,这两个工具相对操作数据库相对很灵活,但是操作难度,和学习成本高,并且适合场景也是有限,如果要实现简单的业务处理逻辑会比较复杂

 

那么,我希望有一种功具,它可以像 mybatis xml,像 metabase BI,一样,能够直接操作原生的数据库查询及操作语句,并且可以有 springboot 的 restful 这种业界标准的接口定义/及参数定义方式,并且按照统一约定的方式,省略三层 MVC 的定义,并且能够对数据进行一些逻辑处理,以满足多元化的业务需求。最好是作为一个插件的形式,能够很好的集成在现有项目中,不会影响到现有的业务逻辑处理

 

这就是我要介绍的一款工具 Rocket API

 

区别于前两类的设计方式不同点在于:

 

  1. 基于 springboot 开发。包括接口的注册,参数的获取,输入输出的消息转换,都是基于 springboot 的生态环境,能无侵入性集成于 springboot 项目中,如果你有基于 springboot 实现了全局异常处理,返回值统一封装,权限控制等,不用担心,都在你的管控范围内

  2. 参考于 mybatis 的参数定义方式,不同点在于使用默认大于配置的逻辑,实现参数的注入直接来源于请求参数,省略了传统 MVC 实体类,方法,VO 等定义

  3. 默认担供了内部函数,可以很简单的实现 多表/多库的增/删/改/查,导出,导入,上传,下载,分页查询等功能

  4. 提供了基于 Groovy 的语法解析,可以实现 Groovy 的一些逻辑处理

  5. 提供了调用 springboot bean 对象的方法及其他任意 java 定义的静态类,方法和对象,这意味着我能够调用公共定义的类,或者之前在项目中定义的 service,dao,和 utils

  6. 因为基于的 groovy 动态语法解析,所以代码修改,或者线上问题的处理能够不用重启服务,也不用升级代码就能够完成功能开发和问题处理,这对开发效率而言会有很大的提升

  7. 传统业务开发,不仅有服务端的开发,还有相对应的文档生成,前后端对接,以及测试配合。“Rocket API” 提供了 POSTMAN 的操作页面,能够将参数的请求值,请求类型,响应等保存起来,给予前端做真实数据的对接,而不是类 yapi,或者 swagger 之类生成的不能使用的假数据。基于这些真实的请求参数和返回值,提供了外部接口能力,测试团队可以以此来做接口的一键冒烟测试,和文档的一键生成

 

演示说明

 

在线演示: http://39.98.181.90:8081/interface-ui

代码仓库:https://gitee.com/alenfive/rocket-api

文档地址:  https://alenfive.gitbook.io/rocket-api/

接口功能逻辑页面

接口功能自测页面

集成方式

1. 添加依赖

  •  
  •  
  •  
  •  
  •  
<dependency>    <groupId>com.github.alenfive</groupId>    <artifactId>rocket-api-boot-starter</artifactId>    <version>0.0.1-SNAPSHOT</version></dependency>

2. 数据源配置

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
@Componentpublic class DefaultDataSourceManager extends DataSourceManager {
@Autowired private JdbcTemplate jdbcTemplate;
@PostConstruct public void init() { Map<String,DataSourceDialect> dialects = new HashMap<>(); dialects.put("mysql",new SqlDataSource(jdbcTemplate,true)); super.setDialectMap(dialects); }}

 

3. 关系型数据库建表,非关系型不用

 

最新建表脚本查看: https://shi-de-luo.gitbook.io/rocket-api/shu-ju-ku-chuang-jian-jiao-ben

 

启动项目,访问地址: http://localhost:8080/interface-ui

更多文章,请关注公众号【程序员李木子】,有免费的电子书哦