本文正在参加「Java主题月 - Java 开发实战」,详情查看活动链接。
摘要
作为Java后端开发,平时开发API接口的时候经常需要定义Controller、Service、Dao、Mapper、XML、VO等Java对象。我们甚至使用代码生成器来通过数据库生成这些代码!有没有什么办法可以让我们不写这些代码,直接操作数据库生成API接口呢?今天给大家推荐一款工具magic-api
,来帮我们实现这个小目标!
SpringBoot实战电商项目mall(40k+star)地址:github.com/macrozheng/…
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 | xml复制代码<!--接口快速开发框架 magic-api--> |
- 在配置文件
application.yml
中添加数据源及magic-api
相关配置;
1 | yaml复制代码spring: |
- 在MySQL中创建数据库
magic_api
,由于我们配置了使用数据库存储接口资源,所以需要先创建magic_api_file
表;
1 | sql复制代码CREATE TABLE `magic_api_file` |
- 再创建
pms_brand
表,用于测试;
1 | sql复制代码CREATE TABLE `pms_brand` ( |
- 最后启动项目,访问
magic-api
的UI界面,访问地址:http://localhost:8080/magic/web
增删改查
接下来我们将以商品品牌管理为例,体验下使用
magic-api
开发接口的快感!使用magic-api
开发API接口,仅需在界面中使用magic-script
脚本即可。
- 首先我们来写个新增接口,先创建一个分组,然后在分组中创建一个
新增
接口,在编辑框中输入如下脚本;
1 | javascript复制代码// 使用body对象可以直接获取请求body中的参数 |
- 在底部的
接口信息
中进行如下配置,POST
请求,请求路径为/create
,请求参数放在请求body
中;
- 再来个根据ID查询的接口,在编辑框中输入如下脚本;
1 | javascript复制代码// 路径变量从path对象中获取 |
- 在底部的
接口信息
中进行如下配置,GET
请求,请求路径为/detail/{id}
,请求参数放在路径变量
中;
- 再来个修改的接口,在编辑框中输入如下脚本;
1 | javascript复制代码return db.table('pms_brand').primary('id',body.id).update(body); |
- 在底部的
接口信息
中进行如下配置,POST
请求,请求路径为/update
,请求参数放在请求body
中;
- 再来个分页查询查询的接口,在编辑框中输入如下脚本;
1 | javascript复制代码return db.table('pms_brand').page(); |
- 在底部的
接口信息
中进行如下配置,GET
请求,请求路径为/page
,请求参数放在请求参数
中(由于已经在application.yml
中配置好了分页参数,可直接使用);
- 再来个根据ID删除的接口,在编辑框中输入如下脚本,删除只能使用update,这设计有点…
1 | javascript复制代码return db.update('delete from pms_brand where id=#{id}'); |
- 在底部的
接口信息
中进行如下配置,POST
请求,请求路径为/delete/{id}
,请求参数放在路径变量
中;
参数验证
我们可以通过断言模块
assert
来进行参数验证。
- 比如新增品牌的时候名称和首字母不能为空,在编辑框中输入如下脚本;
1 | javascript复制代码import assert; //导入断言模块 |
- 在底部的
接口信息
中进行如下配置,POST
请求,请求路径为/test
,请求参数放在请求body
中;
- 当我们不添加
name
字段时,调用接口会返回我们自己定义的错误信息和状态码。
结果转换
我们可以使用map方法对查询数据进行转换,返回我们想要的数据。
- 比如我们想将
showStatus
转换为中文说明,并只返回三个需要的字段,在编辑框中输入如下脚本;
1 | javascript复制代码var list = db.table('pms_brand').select(); |
- 访问该接口,在执行结果中可以发现,返回结果已经转换。
使用事务
在我们使用Java开发接口的时候,少不了用到事务,当然
magic-api
也是支持事务的。使用db.transaction()
方法即可,支持自动事务和手动事务。
- 还是以修改品牌为例,先查询是否存在,如果存在则更新;
1 | javascript复制代码import assert; |
- 在底部的
接口信息
中进行如下配置,POST
请求,请求路径为/test
,请求参数放在请求body
中;
集成Swagger
写了那么多接口,都是在
magic-api
的界面中进行调试的。如果你习惯使用Swagger,magic-api
也可以和Swagger进行无缝整合。
- 首先在
pom.xml
中添加Swagger相关依赖;
1 | xml复制代码<dependencies> |
- 在配置文件
application.yml
中添加Swagger相关配置;
1 | yaml复制代码magic-api: |
- 访问Swagger界面即可查看我们在
magic-api
中写的接口了,访问地址:http://localhost:8080/swagger-ui.html
总结
magic-api
是个很有意思的框架,可以通过在UI界面中使用简单的脚本,进行API接口的开发。不过作为一款小众框架,magic-api
还有很长一段路要走!
参考资料
官方文档:ssssssss.org/
项目源码地址
本文 GitHub github.com/macrozheng/… 已经收录,欢迎大家Star!
本文转载自: 掘金