spring boot集成hasor下的dataway,幹掉後臺,自動配置介面,實現0代碼搭建介面 ...
終於出湖北了,封閉2個月,家裡沒電腦,感覺好久沒自主擼代碼啊啊啊啊啊啊啊啊啊啊啊啊啊。
連接上篇文章Spring Boot 入門(十二):報表導出,對比poi、jxl和esayExcel的效率,繼續從入門到入坑。
dataWay剛剛開源,具體介紹可以去官網看https://www.hasor.net/web/overview/about.html,中國的開源軟體,終於不用看蝌蚪英文了。
1.dataWay已經捐獻給Apache,後續有可靠團隊維護,可以放心大膽使用
2.dataWay只支持JDK1.8及以上,目前只支持mysql和oracle資料庫
3.目前發展到4.1.4,最近看了些博客,不少人反應存在少許不足
1.代碼
spring boot 集成Dataway網上已經有不少很好的博客了,官網https://www.hasor.net/web/dataway/for_boot.html也很詳細,我簡答的貼下相關代碼
- 依賴
1 <!--begin dataWay--> 2 <!--hasor-spring 負責 Spring 和 Hasor 框架之間的整合--> 3 <dependency> 4 <groupId>net.hasor</groupId> 5 <artifactId>hasor-spring</artifactId> 6 <version>4.1.3</version> 7 </dependency> 8 <!--hasor-dataway 是工作在 Hasor 之上,利用 hasor-spring 我們就可以使用 dataway了。--> 9 <dependency> 10 <groupId>net.hasor</groupId> 11 <artifactId>hasor-dataway</artifactId> 12 <version>4.1.3-fix20200414</version><!-- 4.1.3 包存在UI資源缺失問題 --> 13 </dependency> 14 <!--end dataWay-->
- yml配置文件
1 #dataway config 2 # 是否啟用 Dataway 功能(必選:預設false) 3 HASOR_DATAQL_DATAWAY: true 4 # 是否開啟 Dataway 後臺管理界面(必選:預設false) 5 HASOR_DATAQL_DATAWAY_ADMIN: true 6 # dataway API工作路徑(可選,預設:/api/) 7 HASOR_DATAQL_DATAWAY_API_URL: /api/ 8 # dataway-ui 的工作路徑(可選,預設:/interface-ui/) 9 HASOR_DATAQL_DATAWAY_UI_URL: /interface-ui/ 10 # SQL執行器方言設置(可選,建議設置) 11 HASOR_DATAQL_FX_PAGE_DIALECT: mysql
- 新增類
1 package com.learn.hello.system.common.hasor; 2 3 import net.hasor.core.ApiBinder; 4 import net.hasor.core.DimModule; 5 import net.hasor.db.JdbcModule; 6 import net.hasor.db.Level; 7 import net.hasor.spring.SpringModule; 8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.stereotype.Component; 10 11 import javax.sql.DataSource; 12 13 /** 14 * @ClassName DatawayModule 15 * @Deccription TODO 16 * @Author DZ 17 * @Date 2020/5/13 21:48 18 **/ 19 @DimModule 20 @Component 21 public class DatawayModule implements SpringModule { 22 @Autowired 23 private DataSource dataSource = null; 24 @Override 25 public void loadModule(ApiBinder apiBinder) throws Throwable { 26 apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource)); 27 } 28 }
- spring啟動類開啟hasor
- sql建表,可以參考官網,官網提供了mysql和oracle語句
1 CREATE TABLE `interface_info` ( 2 `api_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', 3 `api_method` varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT、POST', 4 `api_path` varchar(512) NOT NULL COMMENT '攔截路徑', 5 `api_status` int(2) NOT NULL COMMENT '狀態:0草稿,1發佈,2有變更,3禁用', 6 `api_comment` varchar(255) NULL COMMENT '註釋', 7 `api_type` varchar(24) NOT NULL COMMENT '腳本類型:SQL、DataQL', 8 `api_script` mediumtext NOT NULL COMMENT '查詢腳本:xxxxxxx', 9 `api_schema` mediumtext NULL COMMENT '介面的請求/響應數據結構', 10 `api_sample` mediumtext NULL COMMENT '請求/響應/請求頭樣本數據', 11 `api_option` mediumtext NULL COMMENT '擴展配置信息', 12 `api_create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間', 13 `api_gmt_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改時間', 14 PRIMARY KEY (`api_id`) 15 ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway 中的API'; 16 17 CREATE TABLE `interface_release` ( 18 `pub_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Publish ID', 19 `pub_api_id` int(11) NOT NULL COMMENT '所屬API ID', 20 `pub_method` varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT、POST', 21 `pub_path` varchar(512) NOT NULL COMMENT '攔截路徑', 22 `pub_status` int(2) NOT NULL COMMENT '狀態:0有效,1無效(可能被下線)', 23 `pub_type` varchar(24) NOT NULL COMMENT '腳本類型:SQL、DataQL', 24 `pub_script` mediumtext NOT NULL COMMENT '查詢腳本:xxxxxxx', 25 `pub_script_ori` mediumtext NOT NULL COMMENT '原始查詢腳本,僅當類型為SQL時不同', 26 `pub_schema` mediumtext NULL COMMENT '介面的請求/響應數據結構', 27 `pub_sample` mediumtext NULL COMMENT '請求/響應/請求頭樣本數據', 28 `pub_option` mediumtext NULL COMMENT '擴展配置信息', 29 `pub_release_time`datetime DEFAULT CURRENT_TIMESTAMP COMMENT '發佈時間(下線不更新)', 30 PRIMARY KEY (`pub_id`) 31 ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway API 發佈歷史。'; 32 33 create index idx_interface_release on interface_release (pub_api_id);
2.啟動
按照官網,啟動的log中需要有dataway相關日誌,才算啟動成功,如下
我啟動的時候,就沒有相關日誌,也能正常使用,現在還不知道具體原因,後續探討。如下我的啟動log。大家啟動後發現沒有相關日誌可以先試試dataway能否使用(能否訪問dataWay的url),如果能正常使用,可以先忽略日誌問題。
3.配置介面
訪問url:http://localhost:8080/interface-ui/#/
這裡有個坑:執行sql返回Unknown SqlMode 如圖
是因為sql不在第一行,第一行會自動生成一個預設註釋,刪掉註釋就好了。如圖
此外,需要攔截器中過濾dataWay的訪問url,否則會被攔截,導致只有登錄情況下才能訪問。註意安全配置
代碼已傳至git:https://gitee.com/bald_dz/SpringbootLean