我們一起聊聊不寫一行代碼通過UI界面配置HTTP接口
環(huán)境:SpringBoot2.7.18
1. 簡介
本篇文章將介紹一個非常優(yōu)秀的快速開發(fā)框架magic-api。magic-api是一個基于Java的接口快速開發(fā)框架,它極大地簡化了HTTP API接口的開發(fā)過程。它具備以下特性:
- 支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer 等支持jdbc規(guī)范的數(shù)據(jù)庫
 - 支持非關(guān)系型數(shù)據(jù)庫Redis、Mongodb
 - 支持集群部署、接口自動同步
 - 支持分頁查詢以及自定義分頁查詢
 - 支持多數(shù)據(jù)源配置,支持在線配置數(shù)據(jù)源
 - 支持SQL緩存,以及自定義SQL緩存
 - 支持自定義JSON結(jié)果、自定義分頁結(jié)果
 - 支持對接口權(quán)限配置、攔截器等功能
 - 支持運(yùn)行時動態(tài)修改數(shù)據(jù)源
 - 基于magic-script腳本引擎,動態(tài)編譯,無需重啟,實(shí)時發(fā)布
 - 支持?jǐn)?shù)據(jù)庫事務(wù)、SQL支持拼接,占位符,判斷等語法
 - 支持腳本代碼自動提示、參數(shù)提示、懸浮提示、錯誤提示
 - 支持導(dǎo)入Spring中的Bean、Java中的類
 - 支持自定義工具類、自定義模塊包、自定義類型擴(kuò)展、自定義方言、自定義列名轉(zhuǎn)換等自定義操作
 
magic-api非常適用于需要快速開發(fā)大量HTTP API接口的場景,如企業(yè)級應(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屬性,接下來編寫接口時會使用這個Key。
配置接口
圖片
這里數(shù)據(jù)源的訪問:db.mydb
3.2 分頁查詢
通常不會將一個表的所有數(shù)據(jù)都查詢出來,實(shí)際都會進(jìn)行分頁查詢,列也不一定都需要,所以我們這里可以分頁及設(shè)置需要查詢的列。
圖片
這里分別指定要查詢的列及分頁情況,你也可以不指定查詢的分頁碼。
return db.mydb.table('big_table').columns("uid", "name", "age", "sex").page()這時候我們請求接口時可以動態(tài)的指定查詢分頁參數(shù)信息。
圖片
3.3 添加數(shù)據(jù)

測試接口

成功添加
3.4 通過SQL操作

直接編寫SQL語句進(jìn)行查詢數(shù)據(jù),而這里分頁無需配置,只需要在調(diào)用該接口時傳入?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封裝而來,目前只做了少量的封裝。對于一些通用的配置可以使用自定義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í)你也可以不用它的這個依賴,它這依賴就干了一事,引入spring-boot-starter-data-redis。
配置
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: xxxooo
    database: 3以上配置完后就可以通過UI進(jìn)行Redis相關(guān)的操作了
圖片
這里你還可以指定動態(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對象
// 定義Bean對象
@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還支持其它非常豐富的功能。具體查看對應(yīng)的文檔。















 
 
 


















 
 
 
 