1. 简介
本篇文章将介绍一个非常优秀的快速开发框架magic-api。magic-api是一个基于Java的接口快速开发框架,它极大地简化了HTTP API接口的开发过程。它具备以下特性:
- 支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer 等支持jdbc规范的数据库
- 支持非关系型数据库Redis、Mongodb
- 支持集群部署、接口自动同步
- 支持分页查询以及自定义分页查询
- 支持多数据源配置,支持在线配置数据源
- 支持SQL缓存,以及自定义SQL缓存
- 支持自定义JSON结果、自定义分页结果
- 支持对接口权限配置、拦截器等功能
- 支持运行时动态修改数据源
- 基于magic-script脚本引擎,动态编译,无需重启,实时发布
- 支持数据库事务、SQL支持拼接,占位符,判断等语法
- 支持脚本代码自动提示、参数提示、悬浮提示、错误提示
- 支持导入Spring中的Bean、Java中的类
- 支持自定义工具类、自定义模块包、自定义类型扩展、自定义方言、自定义列名转换等自定义操作
magic-api非常适用于需要快速开发大量HTTP API接口的场景,如企业级应用开发、微服务架构中的接口开发等。通过magic-api,开发者可以极大地提高开发效率,降低开发成本。
2. 环境准备
2.1 引入依赖
org.ssssssss
magic-api-spring-boot-starter
2.1.1
目前最新版本2.1.1。有1年多没有更新了。
2.2 简单配置
magic-api:
web: /mc-api
设置Web UI访问路径,如上配置后访问如下
图片
接下来就可以通过该界面配置各种HTTP API接口了。
3. 实战案例
接下来将详细的介绍magic-api所支持的各种模块查询功能。
3.1 数据源管理
两种方式使用数据源,一种是在项目中自己配置数据源,还有一种是直接通过UI界面配置数据源。
项目配置数据源
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/testjpa?serverTimeznotallow=GMT%2B8&useSSL=false&characterEncoding=UTF-8
username: root
password: xxxooo
type: com.zaxxer.hikari.HikariDataSource
接下来就可以在UI中进行配置接口
图片
如上配置后,你就可以直接通过接口地址进行访问了。
图片
通过UI配置数据源。
图片
注意这里的Key属性,接下来编写接口时会使用这个Key。
配置接口
图片
这里数据源的访问:db.mydb
3.2 分页查询
通常不会将一个表的所有数据都查询出来,实际都会进行分页查询,列也不一定都需要,所以我们这里可以分页及设置需要查询的列。
图片
这里分别指定要查询的列及分页情况,你也可以不指定查询的分页码。
return db.mydb.table('big_table').columns("uid", "name", "age", "sex").page()
这时候我们请求接口时可以动态的指定查询分页参数信息。
图片
3 添加数据
测试接口
成功添加
4 通过SQL操作
直接编写SQL语句进行查询数据,而这里分页无需配置,只需要在调用该接口时传入参数即可。
图片
3.5 使用MyBatis语法
目前支持一下关键字:
示例:
var sql = """
select * from big_table
and name like concat('%',#{name},'%')
"""
return db.mydb.page(sql)
图片
查询示例
图片
3.6 HTTP接口调用
http模块是基于RestTemplate封装而来,目前只做了少量的封装。对于一些通用的配置可以使用自定义RestTemplate来实现。
示例
import http;
return http.connect('http://localhost:8001/users/info')
.get()
.getBody()
接口配置
图片
3.7 Redis数据查询
先引入相应的依赖
org.ssssssss
magic-api-plugin-redis
2.1.1
其实你也可以不用它的这个依赖,它这依赖就干了一事,引入spring-boot-starter-data-redis。
配置
spring:
redis:
host: 127.0.0.1
port: 6379
password: xxxooo
database: 3
以上配置完后就可以通过UI进行Redis相关的操作了
图片
这里你还可以指定动态参数;
import redis;
return redis.setex('pack:name', 600, name)
调用接口传递name参数;
数据成功添加到Redis中。
3.8 执行Java代码
注入Spring Bean对象
// 定义Bean对象
@Service
public class UserService {
public List list() {
return Arrays.asList("a", "b", "c", "d") ;
}
}
运行结果
图片
调用普通Java代码。
import 'java.util.Date' as Date;
import 'java.text.SimpleDateFormat' as SimpleDateFormat;
var now = new Date();
var df = new SimpleDateFormat('yyyy-MM-dd');
return df.format(now);
你也可以调用静态方法
import xxx.StringUtils;
return StringUtils.isBlank("") ;
以上仅仅是介绍了一丁点功能,magic-api还支持其它非常丰富的功能。具体查看对应的文档。