基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]

基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao

作为Java后端开发,平时开发API接口的时候经常需要定义ControllerServiceDao、Mapper、XML、VO等Java对象。我们甚至使用代码生成器来通过数据库生成这些代码!有没有什么办法可以让我们不写这些代码,直接操作数据库生成API接口呢?今天给大家推荐一款工具magic-api,来帮我们实现这个小目标!

magic-api简介

magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象。

使用

下面我们来波实战,熟悉下使用magic-api来开发API接口。

在SpringBoot中使用

magic-api原生支持SpringBoot,可与SpringBoot无缝整合。

  • 首先在pom.xml中添加magic-api相关依赖;
  1. <!--接口快速开发框架 magic-api-->
  2. <dependency>
  3.     <groupId>org.ssssssss</groupId>
  4.     <artifactId>magic-api-spring-boot-starter</artifactId>
  5.     <version>1.0.2</version>
  6. </dependency>
  • 在配置文件application.yml中添加数据源及magic-api相关配置;
  1. spring:
  2.   datasource:
  3.     url: jdbc:mysql://localhost:3306/magic_api?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
  4.     username: root
  5.     password: root
  6. magic-api:
  7.   # 配置api管理页面入口
  8.   web: /magic/web
  9.   # 配置存储方式
  10.   resource:
  11.     # 配置接口资源存储位置,可选file、database、redis
  12.     type: database
  13.     # 存储表名
  14.     tableName: magic_api_file
  15.     # 使用database、redis存储时的key前缀
  16.     prefix: /magic-api
  17.     # 是否是只读模式
  18.     readonly: false
  19.   # 启用驼峰命名转换
  20.   sql-column-case: camel
  21.   # 分页配置
  22.   page-config:
  23.     # 页大小的请求参数名称
  24.     size: size
  25.     # 页码的请求参数名称
  26.     page: page
  27.     # 未传页码时的默认页码
  28.     default-page: 1
  29.     # 未传页大小时的默认页大小
  30.     default-size: 10
  • 在MySQL中创建数据库magic_api,由于我们配置了使用数据库存储接口资源,所以需要先创建magic_api_file表;
  1. CREATE TABLE `magic_api_file`
  2. (
  3.   `id`           bigint(255) NOT NULL AUTO_INCREMENT,
  4.   `file_path`    varchar(255) DEFAULT NULL,
  5.   `file_content` text,
  6.   PRIMARY KEY (`id`)
  7. )
  • 再创建pms_brand表,用于测试;
  1. CREATE TABLE `pms_brand` (
  2.   `id` bigint(20) NOT NULL AUTO_INCREMENT,
  3.   `big_pic` varchar(255) DEFAULT NULL,
  4.   `brand_story` varchar(255) DEFAULT NULL,
  5.   `factory_status` bit(1) DEFAULT NULL,
  6.   `first_letter` varchar(255) DEFAULT NULL,
  7.   `logo` varchar(255) DEFAULT NULL,
  8.   `name` varchar(255) DEFAULT NULL,
  9.   `product_comment_count` int(11) DEFAULT NULL,
  10.   `product_count` int(11) DEFAULT NULL,
  11.   `show_status` bit(1) DEFAULT NULL,
  12.   `sort` int(11) DEFAULT NULL,
  13.   PRIMARY KEY (`id`)
  14. ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
  • 最后启动项目,访问magic-api的UI界面,访问地址:http://localhost:8080/magic/web

基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃

增删改查

接下来我们将以商品品牌管理为例,体验下使用magic-api开发接口的快感!使用magic-api开发API接口,仅需在界面中使用magic-script脚本即可。

  • 首先我们来写个新增接口,先创建一个分组,然后在分组中创建一个新增接口,在编辑框中输入如下脚本;
  1. // 使用body对象可以直接获取请求body中的参数
  2. return db.table('pms_brand').insert(body);
  • 在底部的接口信息中进行如下配置,POST请求,请求路径为/create,请求参数放在请求body中;
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃
  • 再来个根据ID查询的接口,在编辑框中输入如下脚本;
  1. // 路径变量从path对象中获取
  2. return db.table('pms_brand')
  3.     .where()
  4.     .eq('id',path.id)
  5.     .selectOne();
  • 在底部的接口信息中进行如下配置,GET请求,请求路径为/detail/{id},请求参数放在路径变量中;
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃
  • 再来个修改的接口,在编辑框中输入如下脚本;
  1. return db.table('pms_brand').primary('id',body.id).update(body);
  • 在底部的接口信息中进行如下配置,POST请求,请求路径为/update,请求参数放在请求body中;
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃
  • 再来个分页查询查询的接口,在编辑框中输入如下脚本;
  1. return db.table('pms_brand').page();
  • 在底部的接口信息中进行如下配置,GET请求,请求路径为/page,请求参数放在请求参数中(由于已经在application.yml中配置好了分页参数,可直接使用);
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃
  • 再来个根据ID删除的接口,在编辑框中输入如下脚本,删除只能使用update,这设计有点…
  1. return db.update('delete from pms_brand where id=#{id}'); 
  • 在底部的接口信息中进行如下配置,POST请求,请求路径为/delete/{id},请求参数放在路径变量中;
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃

参数验证

我们可以通过断言模块assert来进行参数验证。

  • 比如新增品牌的时候名称和首字母不能为空,在编辑框中输入如下脚本;
  1. import assert;  //导入断言模块
  2. //验证不通过时,会终止运行
  3. assert.notEmpty(body.name,400,'名称不能为空!');
  4. assert.notEmpty(body.firstLetter,400,'首字母不能为空!');
  5. return db.table('pms_brand').insert(body);
  • 在底部的接口信息中进行如下配置,POST请求,请求路径为/test,请求参数放在请求body中;
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃
  • 当我们不添加name字段时,调用接口会返回我们自己定义的错误信息和状态码。
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃

结果转换

我们可以使用map方法对查询数据进行转换,返回我们想要的数据。

  • 比如我们想将showStatus转换为中文说明,并只返回三个需要的字段,在编辑框中输入如下脚本;
  1. var list = db.table('pms_brand').select();
  2. return list.map((item)=>{
  3.     name : item.name,
  4.     firstLetter : item.firstLetter,
  5.     showStatus : item.showStatus? '不显示' : '显示'
  6. });
  • 访问该接口,在执行结果中可以发现,返回结果已经转换。
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃

使用事务

在我们使用Java开发接口的时候,少不了用到事务,当然magic-api也是支持事务的。使用db.transaction()方法即可,支持自动事务和手动事务。

  • 还是以修改品牌为例,先查询是否存在,如果存在则更新;
  1. import assert; 
  2. var val = db.transaction(()=>{
  3.     var exist = db.table('pms_brand').where().eq('id',body.id).selectOne();
  4.     assert.notNull(exist,404,'找不到该品牌!');
  5.     db.table('pms_brand').primary('id',body.id).update(body);
  6.     return v2;
  7. });
  8. return val;
  • 在底部的接口信息中进行如下配置,POST请求,请求路径为/test,请求参数放在请求body中;
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃

集成Swagger

写了那么多接口,都是在magic-api的界面中进行调试的。如果你习惯使用Swaggermagic-api也可以和Swagger进行无缝整合。

  • 首先在pom.xml中添加Swagger相关依赖;
  1. <dependencies>
  2.     <!--Swagger-UI API文档生产工具-->
  3.     <dependency>
  4.         <groupId>io.springfox</groupId>
  5.         <artifactId>springfox-swagger2</artifactId>
  6.         <version>2.9.2</version>
  7.     </dependency>
  8.     <dependency>
  9.         <groupId>io.springfox</groupId>
  10.         <artifactId>springfox-swagger-ui</artifactId>
  11.         <version>2.9.2</version>
  12.     </dependency>
  13. </dependencies>
  • 在配置文件application.yml中添加Swagger相关配置;
  1. magic-api:
  2.   # 集成Swagger配置
  3.   swagger-config:
  4.     # 文档名称
  5.     name: MagicAPI 测试接口
  6.     # 文档标题
  7.     title: MagicAPI Swagger Docs
  8.     # 文档描述
  9.     description: MagicAPI 测试接口信息
  10.     # 文档版本号
  11.     version: 1.0
  12.     # 文档资源位置
  13.     location: /v2/api-docs/magic-api/swagger2.json
  • 访问Swagger界面即可查看我们在magic-api中写的接口了,访问地址:http://localhost:8080/swagger-ui.html
基于SpringBoot的可视化接口开发工具,不再需要Controller、Service、Dao[JAVA笔记]-度崩网-几度崩溃

总结

magic-api是个很有意思的框架,可以通过在UI界面中使用简单的脚本,进行API接口的开发。不过作为一款小众框架,magic-api还有很长一段路要走!

参考资料

官方文档:https://ssssssss.org/

项目源码地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-magic-api

转载自公众号:

macrozheng

专注Java技术分享,涵盖SpringBoot、SpringCloud、Docker、中间件等实用技术,作者Github开源项目mall(40K+Star)。

Java

springcloud实现RestTemplate远程调用出现java.net.UnknownHostException处理

2021-4-8 13:20:38

Java

超级全面的 SpringBoot 注解介绍,每一个用途都应该清晰[JAVA笔记]

2021-5-27 19:18:24

本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策。若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
⚠️
本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策
若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
私信列表
搜索