曾经有一个这样的想法,就是希望能将java的一些方法,像数据库SQL查询一样的暴露出来,今天在gitee上就发现这样一个神奇的工具 magic-api
magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发。
特性
- 支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer 等支持jdbc规范的数据库
- 支持非关系型数据库Redis、Mongodb
- 支持集群部署、接口自动同步。
- 支持分页查询以及自定义分页查询
- 支持多数据源配置,支持在线配置数据源
- 支持SQL缓存,以及自定义SQL缓存
- 支持自定义JSON结果、自定义分页结果
- 支持对接口权限配置、拦截器等功能
- 支持运行时动态修改数据源
- 支持Swagger接口文档生成
- 基于magic-script脚本引擎,动态编译,无需重启,实时发布
- 支持Linq式查询,关联、转换更简单
- 支持数据库事务、SQL支持拼接,占位符,判断等语法
- 支持文件上传、下载、输出图片
- 支持脚本历史版本对比与恢复
- 支持脚本代码自动提示、参数提示、悬浮提示、错误提示
- 支持导入Spring中的Bean、Java中的类
- 支持在线调试
- 支持自定义工具类、自定义模块包、自定义类型扩展、自定义方言、自定义列名转换等自定义操作
快速开始
org.ssssssss
magic-api-spring-boot-starter
2.1.1
这包名太随意,我正想改掉。
修改application.properties
server.port=9999
#配置web页面入口
magic-api.web=/magic/web
#配置文件存储位置。当以classpath开头时,为只读模式
magic-api.resource.location=/data/magic-api
在线编辑
访问
http://localhost:9999/magic/web进行操作
官网地址: www.ssssssss.org
gitee地址:
https://gitee.com/ssssssss-team/magic-api.git
优点
- 开发效率高:无需编写传统的 Java 对象,如 Controller、Service、Dao 等,通过 UI 界面即可完成接口编写,大大减少了代码量,缩短了开发周期,尤其适合快速开发和迭代项目。
- 功能丰富:支持多种数据库,包括常见的关系型数据库和非关系型数据库,满足不同项目的数据存储需求;提供分页查询、自定义分页、多数据源配置、SQL 缓存、接口权限配置、拦截器等丰富的功能,能够应对复杂的业务场景。
- 灵活性强:支持运行时动态修改数据源、自定义结果格式、自定义扩展(如工具类、模块包、类型扩展等),可以根据项目需求进行灵活定制,满足个性化开发要求。
- 集成友好:以 Spring Boot Starter 的方式提供,与 Spring Boot 项目无缝集成,方便开发者在现有的 Spring 生态中快速引入和使用,无需进行复杂的配置和适配。
- 文档与支持完善:提供详细的文档地址和在线演示,方便开发者学习和参考;还有 QQ 交流群,便于开发者之间交流经验和解决问题,获取技术支持。
- 实时发布与调试:基于 magic-script 脚本引擎,实现动态编译,无需重启即可实时发布,提高了开发的便捷性;同时支持在线调试,方便快速定位和解决问题。
不足
- 学习成本:虽然减少了传统 Java 开发的代码量,但需要学习和掌握 magic-script 脚本语言以及框架的特定语法和功能,对于新手来说可能有一定的学习曲线。
- 社区活跃度:相比一些主流的开源框架,magic-api 的社区活跃度和用户群体可能相对较小,这可能导致在遇到问题时,获取外部帮助的难度相对较大,不如大型社区那样有丰富的资源和解决方案可供参考。
- 项目复杂度限制:对于一些非常复杂、业务逻辑高度定制化的大型项目,完全依赖 magic-api 可能会遇到一些限制,比如在处理极其复杂的业务流程或与多个外部系统深度集成时,可能需要结合传统的 Java 开发方式来实现部分功能,这可能会增加项目的复杂度和开发成本。
- 技术栈依赖:主要基于 Java 和 Spring Boot 技术栈,对于不熟悉这些技术的开发者来说,使用起来可能会有一定的门槛,限制了其在其他技术生态中的应用范围。
适用场景
- 中小型企业快速开发:适合中小型企业或创业团队,快速开发和上线项目,尤其是对于那些业务需求相对明确、数据操作较为常规的项目,可以显著提高开发效率,降低人力成本。
- 原型开发与演示:在项目初期进行原型开发和演示时,可以快速搭建出基本的接口功能,方便与业务部门沟通和验证需求,及时调整和优化项目方向。
- API 网关与微服务:可以作为 API 网关的一部分,快速生成和管理大量的接口,为微服务架构中的各个服务提供统一的接口接入和管理,提高系统的可维护性和扩展性。