SpringBoot可視化接口開(kāi)發(fā)工具magic-api的簡(jiǎn)單使用教程
magic-api簡(jiǎn)介
magic-api是一個(gè)基于Java的接口快速開(kāi)發(fā)框架,編寫(xiě)接口將通過(guò)magic-api提供的UI界面完成,自動(dòng)映射為HTTP接口,無(wú)需定義Controller、Service、Dao、Mapper、XML、VO等Java對(duì)象。
使用
下面我們來(lái)波實(shí)戰(zhàn),熟悉下使用magic-api來(lái)開(kāi)發(fā)API接口。
在SpringBoot中使用
magic-api原生支持SpringBoot,可與SpringBoot無(wú)縫整合。
- 首先在pom.xml中添加magic-api相關(guān)依賴(lài);
<!--接口快速開(kāi)發(fā)框架 magic-api--> <dependency> <groupId>org.ssssssss</groupId> <artifactId>magic-api-spring-boot-starter</artifactId> <version>1.0.2</version> </dependency>
- 在配置文件application.yml中添加數(shù)據(jù)源及magic-api相關(guān)配置;
spring: datasource: url: jdbc:mysql://localhost:3306/magic_api?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: root magic-api: # 配置api管理頁(yè)面入口 web: /magic/web # 配置存儲(chǔ)方式 resource: # 配置接口資源存儲(chǔ)位置,可選file、database、redis type: database # 存儲(chǔ)表名 tableName: magic_api_file # 使用database、redis存儲(chǔ)時(shí)的key前綴 prefix: /magic-api # 是否是只讀模式 readonly: false # 啟用駝峰命名轉(zhuǎn)換 sql-column-case: camel # 分頁(yè)配置 page-config: # 頁(yè)大小的請(qǐng)求參數(shù)名稱(chēng) size: size # 頁(yè)碼的請(qǐng)求參數(shù)名稱(chēng) page: page # 未傳頁(yè)碼時(shí)的默認(rèn)頁(yè)碼 default-page: 1 # 未傳頁(yè)大小時(shí)的默認(rèn)頁(yè)大小 default-size: 10
- 在MySQL中創(chuàng)建數(shù)據(jù)庫(kù)magic_api,由于我們配置了使用數(shù)據(jù)庫(kù)存儲(chǔ)接口資源,所以需要先創(chuàng)建magic_api_file表;
CREATE TABLE `magic_api_file` ( `id` bigint(255) NOT NULL AUTO_INCREMENT, `file_path` varchar(255) DEFAULT NULL, `file_content` text, PRIMARY KEY (`id`) )
- 再創(chuàng)建pms_brand表,用于測(cè)試;
CREATE TABLE `pms_brand` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `big_pic` varchar(255) DEFAULT NULL, `brand_story` varchar(255) DEFAULT NULL, `factory_status` bit(1) DEFAULT NULL, `first_letter` varchar(255) DEFAULT NULL, `logo` varchar(255) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `product_comment_count` int(11) DEFAULT NULL, `product_count` int(11) DEFAULT NULL, `show_status` bit(1) DEFAULT NULL, `sort` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
- 最后啟動(dòng)項(xiàng)目,訪(fǎng)問(wèn)magic-api的UI界面,訪(fǎng)問(wèn)地址:http://localhost:8080/magic/web

增刪改查
接下來(lái)我們將以商品品牌管理為例,體驗(yàn)下使用magic-api開(kāi)發(fā)接口的快感!使用magic-api開(kāi)發(fā)API接口,僅需在界面中使用magic-script腳本即可。
- 首先我們來(lái)寫(xiě)個(gè)新增接口,先創(chuàng)建一個(gè)分組,然后在分組中創(chuàng)建一個(gè)新增接口,在編輯框中輸入如下腳本;
// 使用body對(duì)象可以直接獲取請(qǐng)求body中的參數(shù)
return db.table('pms_brand').insert(body);
- 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/create,請(qǐng)求參數(shù)放在請(qǐng)求body中;

- 再來(lái)個(gè)根據(jù)ID查詢(xún)的接口,在編輯框中輸入如下腳本;
// 路徑變量從path對(duì)象中獲取
return db.table('pms_brand')
.where()
.eq('id',path.id)
.selectOne();
- 在底部的接口信息中進(jìn)行如下配置,GET請(qǐng)求,請(qǐng)求路徑為/detail/{id},請(qǐng)求參數(shù)放在路徑變量中;

- 再來(lái)個(gè)修改的接口,在編輯框中輸入如下腳本;
return db.table('pms_brand').primary('id',body.id).update(body);
- 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/update,請(qǐng)求參數(shù)放在請(qǐng)求body中;

- 再來(lái)個(gè)分頁(yè)查詢(xún)查詢(xún)的接口,在編輯框中輸入如下腳本;
return db.table('pms_brand').page();
- 在底部的接口信息中進(jìn)行如下配置,GET請(qǐng)求,請(qǐng)求路徑為/page,請(qǐng)求參數(shù)放在請(qǐng)求參數(shù)中(由于已經(jīng)在application.yml中配置好了分頁(yè)參數(shù),可直接使用);

- 再來(lái)個(gè)根據(jù)ID刪除的接口,在編輯框中輸入如下腳本,刪除只能使用update,這設(shè)計(jì)有點(diǎn)...
return db.update('delete from pms_brand where id=#{id}');
- 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/delete/{id},請(qǐng)求參數(shù)放在路徑變量中;

參數(shù)驗(yàn)證
我們可以通過(guò)斷言模塊assert來(lái)進(jìn)行參數(shù)驗(yàn)證。
- 比如新增品牌的時(shí)候名稱(chēng)和首字母不能為空,在編輯框中輸入如下腳本;
import assert; //導(dǎo)入斷言模塊
//驗(yàn)證不通過(guò)時(shí),會(huì)終止運(yùn)行
assert.notEmpty(body.name,400,'名稱(chēng)不能為空!');
assert.notEmpty(body.firstLetter,400,'首字母不能為空!');
return db.table('pms_brand').insert(body);
- 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/test,請(qǐng)求參數(shù)放在請(qǐng)求body中;

- 當(dāng)我們不添加name字段時(shí),調(diào)用接口會(huì)返回我們自己定義的錯(cuò)誤信息和狀態(tài)碼。

結(jié)果轉(zhuǎn)換
我們可以使用map方法對(duì)查詢(xún)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,返回我們想要的數(shù)據(jù)。
- 比如我們想將showStatus轉(zhuǎn)換為中文說(shuō)明,并只返回三個(gè)需要的字段,在編輯框中輸入如下腳本;
var list = db.table('pms_brand').select();
return list.map((item)=>{
name : item.name,
firstLetter : item.firstLetter,
showStatus : item.showStatus? '不顯示' : '顯示'
});
- 訪(fǎng)問(wèn)該接口,在執(zhí)行結(jié)果中可以發(fā)現(xiàn),返回結(jié)果已經(jīng)轉(zhuǎn)換。

使用事務(wù)
在我們使用Java開(kāi)發(fā)接口的時(shí)候,少不了用到事務(wù),當(dāng)然magic-api也是支持事務(wù)的。使用db.transaction()方法即可,支持自動(dòng)事務(wù)和手動(dòng)事務(wù)。
- 還是以修改品牌為例,先查詢(xún)是否存在,如果存在則更新;
import assert;
var val = db.transaction(()=>{
var exist = db.table('pms_brand').where().eq('id',body.id).selectOne();
assert.notNull(exist,404,'找不到該品牌!');
db.table('pms_brand').primary('id',body.id).update(body);
return v2;
});
return val;
- 在底部的接口信息中進(jìn)行如下配置,POST請(qǐng)求,請(qǐng)求路徑為/test,請(qǐng)求參數(shù)放在請(qǐng)求body中;

集成Swagger
寫(xiě)了那么多接口,都是在magic-api的界面中進(jìn)行調(diào)試的。如果你習(xí)慣使用Swagger,magic-api也可以和Swagger進(jìn)行無(wú)縫整合。
- 首先在pom.xml中添加Swagger相關(guān)依賴(lài);
<dependencies> <!--Swagger-UI API文檔生產(chǎn)工具--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> </dependencies>
- 在配置文件application.yml中添加Swagger相關(guān)配置;
magic-api: # 集成Swagger配置 swagger-config: # 文檔名稱(chēng) name: MagicAPI 測(cè)試接口 # 文檔標(biāo)題 title: MagicAPI Swagger Docs # 文檔描述 description: MagicAPI 測(cè)試接口信息 # 文檔版本號(hào) version: 1.0 # 文檔資源位置 location: /v2/api-docs/magic-api/swagger2.json
- 訪(fǎng)問(wèn)Swagger界面即可查看我們?cè)趍agic-api中寫(xiě)的接口了,訪(fǎng)問(wèn)地址:http://localhost:8080/swagger-ui.html

總結(jié)
magic-api是個(gè)很有意思的框架,可以通過(guò)在UI界面中使用簡(jiǎn)單的腳本,進(jìn)行API接口的開(kāi)發(fā)。不過(guò)作為一款小眾框架,magic-api還有很長(zhǎng)一段路要走!
參考資料
項(xiàng)目源碼地址
https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-magic-api
以上就是SpringBoot可視化接口開(kāi)發(fā)工具magic-api的簡(jiǎn)單使用教程的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot magic-api的使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot3整合SpringDoc OpenAPI生成接口文檔的詳細(xì)過(guò)程
- 關(guān)于springboot忽略接口,參數(shù)注解的使用ApiIgnore
- Springboot+Redis實(shí)現(xiàn)API接口防刷限流的項(xiàng)目實(shí)踐
- SpringBoot?快速實(shí)現(xiàn)?api?接口加解密功能
- 詳解Springboot快速搭建跨域API接口的步驟(idea社區(qū)版2023.1.4+apache-maven-3.9.3-bin)
- SpringBoot整合Sa-Token實(shí)現(xiàn)?API?接口簽名安全校驗(yàn)功能
- SpringBoot如何根據(jù)目錄結(jié)構(gòu)生成API接口前綴
- SpringBoot實(shí)現(xiàn)API接口的完整代碼
- springboot接入方式對(duì)接股票數(shù)據(jù)源API接口的操作方法
相關(guān)文章
將Java的List結(jié)構(gòu)通過(guò)GSON庫(kù)轉(zhuǎn)換為JSON的方法示例
GONS是Google在GitHub上開(kāi)源的Java類(lèi)庫(kù),提供各種Java對(duì)象和JSON格式對(duì)象之間的轉(zhuǎn)換功能,將Java的List結(jié)構(gòu)通過(guò)GSON庫(kù)轉(zhuǎn)換為JSON的方法示例2016-06-06
如何對(duì)quartz定時(shí)任務(wù)設(shè)置結(jié)束時(shí)間
這篇文章主要介紹了如何對(duì)quartz定時(shí)任務(wù)設(shè)置結(jié)束時(shí)間問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
mybatis的if判斷不要使用boolean值的說(shuō)明
這篇文章主要介紹了mybatis的if判斷不要使用boolean值的說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Java實(shí)現(xiàn)三子棋小游戲簡(jiǎn)易版
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)三子棋小游戲簡(jiǎn)易版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Java Socket編程簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java Socket編程簡(jiǎn)介的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05
spring中@Transactional?注解失效的原因及解決辦法
面試中經(jīng)常會(huì)被問(wèn)到事務(wù)失效的場(chǎng)景有哪些,本文主要介紹了spring中@Transactional?注解失效的原因及解決辦法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06

