微服务项目学习:cloud.macrozheng.com
"偷懒"可以说是技术创新的重要动力之一,很多技术,框架的革新,本质上就是为了能更好的"偷懒",今天又来分享一款偷懒神器:Rocket-API
什么是Rocket-API?
Rocket-API
基于 SpringBoot 的 API 敏捷开发框架,服务端50%以上的功能只需要写SQL或者 mongodb原始执行脚本就能完成开发,另外30%也在不停的完善公共组件。
比如文件上传,下载,导出,预览,分页等等通过一二行代码也能完成开发,剩下的20%也能依赖于动态编译技术生成class的形式,不需要发布部署,不需要重启来实现研发团队的快速编码,提测以及回归。实现了服务端研发效率300%-500%
的提升,人力成本减少了3倍
定位
拒绝CRUD。用尽可能简单的方式,完成尽可能多的需求。通过约定的方式实现统一的标准。告别加班,拒绝重复劳动,远离搬砖。
特性
如下:
用于快速开发 API 接口。不再定义 Controller
,Service
,Dao
,Mybatis
,xml
,Entity
,VO
等对象和方法。可视化界面,将入参自动封装到可执行的脚本上,支持所有关系性数据库 SQL 执行语句,非关系型 MONGODB 查询语句,欢迎扩展。 完全基于 springboot2.x 作为 springboot 项目的 stater 方式集成,无侵入性,新老项目都能快速集成。 只需编写一行代码即可完成大部分的业务需求开发,使用难度级别(测试 or 运维)也可参与开发。 在线动态编译,无需重启,即时生效,多数据源操作。 版本控制,历史记录比对,回滚等功能。 远程一键发布到线上环境。 线上 POSTMAN
调试,保存POSTMAN
信息或三方文档的自动生成,历史调用记录存储,回塑。代码提示,SQL 提示,语法提示。 用户管理控制,安全性控制,以及历史行为记录。 经过多次项目验证,传统业务型开发,服务端效率能够提升 3-5 倍,前后端联调提升效率 1 倍,测试效率 2 倍提升。
这或许是一个对你有用的开源项目,mall项目是一套基于 SpringBoot3 + Vue 的电商系统(Github标星60K),后端支持多模块和 2024最新微服务架构 ,采用Docker和K8S部署。包括前台商城项目和后台管理系统,能支持完整的订单流程!涵盖商品、订单、购物车、权限、优惠券、会员、支付等功能!
Boot项目:https://github.com/macrozheng/mall Cloud项目:https://github.com/macrozheng/mall-swarm 视频教程:https://www.macrozheng.com/video/ 项目演示:
传统开发步骤
如下:
增加一张表 创建实体对象,映射这张表 创建 API 入参 VO 创建 API 出参 VO 创建 Controller 创建 Service 创建 Dao 创建 Mapper,xml 或者 JPA 在 mysql 客户端,或者 mongo 客户端中写执行脚本语句,复制到代码中 反复重启,进行接口自测 编写 API 文档 完成一个功能点开发
使用一些工具比如 mybatis plus,jpa 或者 idea 的 Easy code
、MybatisCodeHelperPro
等可以一键生成一些基于单表的操作的相关代码。
但是业务场景来说,可能喜欢更灵活,代码执行效率更高的一些操作方式,并且一个项目开发中,从来不仅仅是单表的一些操作操作。
市面上就上面的这些问题,提供了 APIJSON
和 GraphQL
等解决方案,这两个工具相对操作数据库相对很灵活,但是操作难度,和学习成本高,并且适合场景也是有限,如果要实现简单的业务处理逻辑会比较复杂。
那么,我希望有一种功具,它可以像 mybatis xml,像 metabase BI
,一样,能够直接操作原生的数据库查询及操作语句。
并且可以有 springboot 的 restful 这种业界标准的接口定义/及参数定义方式,并且按照统一约定的方式,省略三层 MVC 的定义,并且能够对数据进行一些逻辑处理,以满足多元化的业务需求。
最好是作为一个插件的形式,能够很好的集成在现有项目中,不会影响到现有的业务逻辑处理。
这就是我要介绍的一款工具 Rocket API
:
区别于前两类的设计方式不同点在于:
基于 springboot 开发。包括接口的注册,参数的获取,输入输出的消息转换,都是基于 springboot 的生态环境,能无侵入性集成于 springboot 项目中。如果你有基于 springboot 实现了全局异常处理,返回值统一封装,权限控制等,不用担心,都在你的管控范围内。 参考于 mybatis 的参数定义方式,不同点在于使用默认大于配置的逻辑,实现参数的注入直接来源于请求参数,省略了传统 MVC 实体类,方法,VO 等定义。 默认担供了内部函数,可以很简单的实现 多表/多库的增/删/改/查,导出,导入,上传,下载,分页查询等功能。 提供了基于 Groovy 的语法解析,可以实现 Groovy 的一些逻辑处理。 提供了调用 springboot bean 对象的方法及其他任意 java 定义的静态类,方法和对象,这意味着我能够调用公共定义的类,或者之前在项目中定义的 service,dao 和 utils。 因为基于的 groovy 动态语法解析,所以代码修改,或者线上问题的处理能够不用重启服务,也不用升级代码就能够完成功能开发和问题处理,这对开发效率而言会有很大的提升。 传统业务开发,不仅有服务端的开发,还有相对应的文档生成,前后端对接,以及测试配合。
Rocket API
提供了 POSTMAN
的操作页面,能够将参数的请求值,请求类型,响应等保存起来,给予前端做真实数据的对接,而不是类 yapi,或者 swagger 之类生成的不能使用的假数据。
基于这些真实的请求参数和返回值,提供了外部接口能力,测试团队可以以此来做接口的一键冒烟测试和文档的一键生成。
演示说明
接口功能逻辑页面:
接口功能自测页面:
集成方式
添加依赖:
<dependency>
<groupId>com.github.alenfive</groupId>
<artifactId>rocket-api-boot-starter</artifactId>
<version>2.4.4.RELEASE</version>
</dependency>
数据源配置:
@Component
public 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);
}
}
启动项目,访问地址:
http://localhost:8080/interface-ui
项目地址
项目地址:https://gitee.com/alenfive/rocket-api
文档地址:https://www.yuque.com/alenfive/rocket-api
Github上标星11K
的微服务实战项目mall-swarm,全套 视频教程(2024最新版) 来了!全套教程约26小时,共59期
,如果你想学习目前最新的微服务技术栈
,同时提高自己微服务项目的开发能力
的话,不妨了解下,下面是项目的整体架构图,感兴趣的小伙伴可以点击链接 mall-swarm视频教程 加入学习。
整套 视频教程 的内容还是非常完善的,涵盖Spring Cloud核心组件、微服务项目实战、Kubernetes容器化部署等内容,你也可以点击链接 mall-swarm视频教程 了解更多内容。