我們一起聊聊不寫一行代碼通過UI界面配置HTTP接口
環(huán)境:SpringBoot2.7.18
1. 簡介
本篇文章將介紹一個(gè)非常優(yōu)秀的快速開發(fā)框架magic-api。magic-api是一個(gè)基于Java的接口快速開發(fā)框架,它極大地簡化了HTTP API接口的開發(fā)過程。它具備以下特性:
- 支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer 等支持jdbc規(guī)范的數(shù)據(jù)庫
- 支持非關(guān)系型數(shù)據(jù)庫Redis、Mongodb
- 支持集群部署、接口自動(dòng)同步
- 支持分頁查詢以及自定義分頁查詢
- 支持多數(shù)據(jù)源配置,支持在線配置數(shù)據(jù)源
- 支持SQL緩存,以及自定義SQL緩存
- 支持自定義JSON結(jié)果、自定義分頁結(jié)果
- 支持對(duì)接口權(quán)限配置、攔截器等功能
- 支持運(yùn)行時(shí)動(dòng)態(tài)修改數(shù)據(jù)源
- 基于magic-script腳本引擎,動(dòng)態(tài)編譯,無需重啟,實(shí)時(shí)發(fā)布
- 支持?jǐn)?shù)據(jù)庫事務(wù)、SQL支持拼接,占位符,判斷等語法
- 支持腳本代碼自動(dòng)提示、參數(shù)提示、懸浮提示、錯(cuò)誤提示
- 支持導(dǎo)入Spring中的Bean、Java中的類
- 支持自定義工具類、自定義模塊包、自定義類型擴(kuò)展、自定義方言、自定義列名轉(zhuǎn)換等自定義操作
magic-api非常適用于需要快速開發(fā)大量HTTP API接口的場景,如企業(yè)級(jí)應(yīng)用開發(fā)、微服務(wù)架構(gòu)中的接口開發(fā)等。通過magic-api,開發(fā)者可以極大地提高開發(fā)效率,降低開發(fā)成本。
2. 環(huán)境準(zhǔn)備
2.1 引入依賴
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
目前最新版本2.1.1。有1年多沒有更新了。
2.2 簡單配置
magic-api:
web: /mc-api
設(shè)置Web UI訪問路徑,如上配置后訪問如下
圖片
接下來就可以通過該界面配置各種HTTP API接口了。
3. 實(shí)戰(zhàn)案例
接下來將詳細(xì)的介紹magic-api所支持的各種模塊查詢功能。
3.1 數(shù)據(jù)源管理
兩種方式使用數(shù)據(jù)源,一種是在項(xiàng)目中自己配置數(shù)據(jù)源,還有一種是直接通過UI界面配置數(shù)據(jù)源。
項(xiàng)目配置數(shù)據(jù)源
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中進(jìn)行配置接口
圖片
如上配置后,你就可以直接通過接口地址進(jìn)行訪問了。
圖片
通過UI配置數(shù)據(jù)源。
圖片
注意這里的Key屬性,接下來編寫接口時(shí)會(huì)使用這個(gè)Key。
配置接口
圖片
這里數(shù)據(jù)源的訪問:db.mydb
3.2 分頁查詢
通常不會(huì)將一個(gè)表的所有數(shù)據(jù)都查詢出來,實(shí)際都會(huì)進(jìn)行分頁查詢,列也不一定都需要,所以我們這里可以分頁及設(shè)置需要查詢的列。
圖片
這里分別指定要查詢的列及分頁情況,你也可以不指定查詢的分頁碼。
return db.mydb.table('big_table').columns("uid", "name", "age", "sex").page()
這時(shí)候我們請(qǐng)求接口時(shí)可以動(dòng)態(tài)的指定查詢分頁參數(shù)信息。
圖片
3.3 添加數(shù)據(jù)
測試接口
成功添加
3.4 通過SQL操作
直接編寫SQL語句進(jìn)行查詢數(shù)據(jù),而這里分頁無需配置,只需要在調(diào)用該接口時(shí)傳入?yún)?shù)即可。
圖片
3.5 使用MyBatis語法
目前支持一下關(guān)鍵字:<if>、<elseif>、<else>、<where>、<foreach>、<trim>、<set>。
示例:
var sql = """
select * from big_table
<where>
<if test="name != null and name != ''">
and name like concat('%',#{name},'%')
</if>
</where>
"""
return db.mydb.page(sql)
圖片
查詢示例
圖片
3.6 HTTP接口調(diào)用
http模塊是基于RestTemplate封裝而來,目前只做了少量的封裝。對(duì)于一些通用的配置可以使用自定義RestTemplate來實(shí)現(xiàn)。
示例
import http;
return http.connect('http://localhost:8001/users/info')
.get()
.getBody()
接口配置
圖片
3.7 Redis數(shù)據(jù)查詢
先引入相應(yīng)的依賴
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-plugin-redis</artifactId>
<version>2.1.1</version>
</dependency>
其實(shí)你也可以不用它的這個(gè)依賴,它這依賴就干了一事,引入spring-boot-starter-data-redis。
配置
spring:
redis:
host: 127.0.0.1
port: 6379
password: xxxooo
database: 3
以上配置完后就可以通過UI進(jìn)行Redis相關(guān)的操作了
圖片
這里你還可以指定動(dòng)態(tài)參數(shù);
import redis;
return redis.setex('pack:name', 600, name)
調(diào)用接口傳遞name參數(shù);
數(shù)據(jù)成功添加到Redis中。
3.8 執(zhí)行Java代碼
注入Spring Bean對(duì)象
// 定義Bean對(duì)象
@Service
public class UserService {
public List<String> list() {
return Arrays.asList("a", "b", "c", "d") ;
}
}
運(yùn)行結(jié)果
圖片
調(diào)用普通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);
你也可以調(diào)用靜態(tài)方法
import xxx.StringUtils;
return StringUtils.isBlank("") ;
以上僅僅是介紹了一丁點(diǎn)功能,magic-api還支持其它非常豐富的功能。具體查看對(duì)應(yīng)的文檔。