Spring Boot 入门(十三):集成Hasor的Dataway模块,干掉后台,自动配置接口
终于出湖北了,封闭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,否则会被拦截,导致只有登录情况下才能访问。注意安全配置