SpringBoot可視化接口開發工具magic-api的簡單使用教程
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相關依賴;
<!--接口快速開發框架 magic-api--> <dependency> <groupId>org.ssssssss</groupId> <artifactId>magic-api-spring-boot-starter</artifactId> <version>1.0.2</version> </dependency>
- 在配置文件application.yml中添加數據源及magic-api相關配置;
spring: datasource: url: jdbc:mysql://localhost:3306/magic_api?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: root magic-api: # 配置api管理頁面入口 web: /magic/web # 配置存儲方式 resource: # 配置接口資源存儲位置,可選file、database、redis type: database # 存儲表名 tableName: magic_api_file # 使用database、redis存儲時的key前綴 prefix: /magic-api # 是否是隻讀模式 readonly: false # 啟用駝峰命名轉換 sql-column-case: camel # 分頁配置 page-config: # 頁大小的請求參數名稱 size: size # 頁碼的請求參數名稱 page: page # 未傳頁碼時的默認頁碼 default-page: 1 # 未傳頁大小時的默認頁大小 default-size: 10
- 在MySQL中創建數據庫magic_api,由於我們配置瞭使用數據庫存儲接口資源,所以需要先創建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`) )
- 再創建pms_brand表,用於測試;
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;
- 最後啟動項目,訪問magic-api的UI界面,訪問地址:http://localhost:8080/magic/web
增刪改查
接下來我們將以商品品牌管理為例,體驗下使用magic-api開發接口的快感!使用magic-api開發API接口,僅需在界面中使用magic-script腳本即可。
- 首先我們來寫個新增接口,先創建一個分組,然後在分組中創建一個新增接口,在編輯框中輸入如下腳本;
// 使用body對象可以直接獲取請求body中的參數 return db.table('pms_brand').insert(body);
- 在底部的接口信息中進行如下配置,POST請求,請求路徑為/create,請求參數放在請求body中;
- 再來個根據ID查詢的接口,在編輯框中輸入如下腳本;
// 路徑變量從path對象中獲取 return db.table('pms_brand') .where() .eq('id',path.id) .selectOne();
- 在底部的接口信息中進行如下配置,GET請求,請求路徑為/detail/{id},請求參數放在路徑變量中;
- 再來個修改的接口,在編輯框中輸入如下腳本;
return db.table('pms_brand').primary('id',body.id).update(body);
- 在底部的接口信息中進行如下配置,POST請求,請求路徑為/update,請求參數放在請求body中;
- 再來個分頁查詢查詢的接口,在編輯框中輸入如下腳本;
return db.table('pms_brand').page();
- 在底部的接口信息中進行如下配置,GET請求,請求路徑為/page,請求參數放在請求參數中(由於已經在application.yml中配置好瞭分頁參數,可直接使用);
- 再來個根據ID刪除的接口,在編輯框中輸入如下腳本,刪除隻能使用update,這設計有點…
return db.update('delete from pms_brand where id=#{id}');
- 在底部的接口信息中進行如下配置,POST請求,請求路徑為/delete/{id},請求參數放在路徑變量中;
參數驗證
我們可以通過斷言模塊assert來進行參數驗證。
- 比如新增品牌的時候名稱和首字母不能為空,在編輯框中輸入如下腳本;
import assert; //導入斷言模塊 //驗證不通過時,會終止運行 assert.notEmpty(body.name,400,'名稱不能為空!'); assert.notEmpty(body.firstLetter,400,'首字母不能為空!'); return db.table('pms_brand').insert(body);
- 在底部的接口信息中進行如下配置,POST請求,請求路徑為/test,請求參數放在請求body中;
- 當我們不添加name字段時,調用接口會返回我們自己定義的錯誤信息和狀態碼。
結果轉換
我們可以使用map方法對查詢數據進行轉換,返回我們想要的數據。
- 比如我們想將showStatus轉換為中文說明,並隻返回三個需要的字段,在編輯框中輸入如下腳本;
var list = db.table('pms_brand').select(); return list.map((item)=>{ name : item.name, firstLetter : item.firstLetter, showStatus : item.showStatus? '不顯示' : '顯示' });
- 訪問該接口,在執行結果中可以發現,返回結果已經轉換。
使用事務
在我們使用Java開發接口的時候,少不瞭用到事務,當然magic-api也是支持事務的。使用db.transaction()方法即可,支持自動事務和手動事務。
- 還是以修改品牌為例,先查詢是否存在,如果存在則更新;
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;
- 在底部的接口信息中進行如下配置,POST請求,請求路徑為/test,請求參數放在請求body中;
集成Swagger
寫瞭那麼多接口,都是在magic-api的界面中進行調試的。如果你習慣使用Swagger,magic-api也可以和Swagger進行無縫整合。
- 首先在pom.xml中添加Swagger相關依賴;
<dependencies> <!--Swagger-UI API文檔生產工具--> <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相關配置;
magic-api: # 集成Swagger配置 swagger-config: # 文檔名稱 name: MagicAPI 測試接口 # 文檔標題 title: MagicAPI Swagger Docs # 文檔描述 description: MagicAPI 測試接口信息 # 文檔版本號 version: 1.0 # 文檔資源位置 location: /v2/api-docs/magic-api/swagger2.json
- 訪問Swagger界面即可查看我們在magic-api中寫的接口瞭,訪問地址:http://localhost:8080/swagger-ui.html
總結
magic-api是個很有意思的框架,可以通過在UI界面中使用簡單的腳本,進行API接口的開發。不過作為一款小眾框架,magic-api還有很長一段路要走!
參考資料
官方文檔:https://ssssssss.org/
項目源碼地址
https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-magic-api
以上就是SpringBoot可視化接口開發工具magic-api的簡單使用教程的詳細內容,更多關於SpringBoot magic-api的使用的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Springboot集成swagger實現方式
- 解決Swagger2返回map復雜結構不能解析的問題
- SpringBoot集成Flyway進行數據庫版本遷移管理的步驟
- springboot 整合fluent mybatis的過程,看這篇夠瞭
- 解決springboot引入swagger2不生效問題