当前位置: 首页 > news >正文

Dataway在Spring Boot中的引入以及使用教程

Dataway是Hasor生态中的接口配置工具,能帮助开发者快速配置数据接口。它支持DataQL和SQL两种语言模式,可将SQL转换为DataQL执行,简化数据查询与交互,无需编写大量代码。接口配置完成后,可进行自测、冒烟测试,通过后发布,之后可通过定义的接口路径访问数据,且接口历史版本等信息保存在特定数据库表中。

引入步骤

  • 引入依赖 :在Spring Boot项目的pom.xml文件中添加Dataway相关依赖,包括hasor-springhasor-dataway,前者负责Spring与Hasor框架整合,后者是Dataway本身。

  • 配置Dataway及初始化数据表 :在application.propertiesapplication.yml文件中进行Dataway相关配置,如HASOR_DATAQL_DATAWAYHASOR_DATAQL_DATAWAY_ADMIN等,且Dataway需要两张数据表才能工作,建表语句可在Dataway依赖jar包的“META-INF/hasor-framework/mysql”目录下找到。

  • 配置数据源 :若项目未集成数据源,可采用druid + mysql + spring-boot-starter-jdbc的方式进行配置,添加相应依赖并设置数据源相关参数,包括数据库地址、用户名、密码等。

  • 将数据源设置到Hasor容器中 :新建一个Hasor模块类,使用@DimModule@Component注解,将该模块交给Spring管理,并通过Spring注入数据源,在Hasor启动时调用loadModule方法,把数据源设置到Hasor中。

  • 在Spring Boot中启用Hasor :在Spring启动类上增加@EnableHasor@EnableHasorWeb注解,分别在Spring中启用Hasor和将hasor-web配置到Spring环境中,Dataway的UI是通过hasor-web提供服务。

示例代码

以下是一个完整的示例,包括从引入依赖到创建接口的全过程:

  • 引入依赖

    <!-- Hasor核心依赖 -->
    <dependency><groupId>net.hasor</groupId><artifactId>hasor-core</artifactId><version>5.0.18</version>
    </dependency>
    <!-- Spring整合Hasor -->
    <dependency><groupId>net.hasor</groupId><artifactId>hasor-spring</artifactId><version>5.0.18</version>
    </dependency>
    <!-- Dataway -->
    <dependency><groupId>net.hasor</groupId><artifactId>hasor-dataway</artifactId><version>5.0.18</version>
    </dependency>
    <!-- 数据库连接池 -->
    <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.10</version>
    </dependency>
  • 配置数据源及Dataway相关信息 :在application.yml文件中配置数据源和Dataway的访问路径等信息。

    spring:datasource:url: jdbc:mysql://localhost:3306/dataway_demousername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
    hasor:dataway:api: /api/admin: /interface-ui/
  • 创建Hasor模块类,将数据源注入到Hasor容器

    @DimModule
    @Component
    public class ExampleModule implements SpringModule {@Autowiredprivate DataSource dataSource;@Overridepublic void loadModule(ApiBinder apiBinder) throws Throwable {apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));}
    }
  • 在Spring Boot启动类上启用Hasor

    @EnableHasor
    @EnableHasorWeb
    @SpringBootApplication
    public class DatawayDemoApplication {public static void main(String[] args) {SpringApplication.run(DatawayDemoApplication.class, args);}
    }
  • 在Dataway管理界面创建接口 :应用启动后,访问http://localhost:8080/interface-ui/进入Dataway管理界面,点击“新建接口”按钮,输入接口名称和路径,如/getUsers,然后在查询编辑器中编写DataQL查询,例如:

    var query = @@sql()<%SELECT id, name, age FROM user
    %>;
    return query();

    点击“保存”按钮保存接口,然后点击“测试”按钮测试接口是否正常工作。

  • 自定义UDF :以下是一个自定义UDF的示例,用于返回当前用户的名字:

    @DimUdf("myNameUdf")
    @Service
    public class MyNameUdf implements Udf {@Resourceprivate MyUdfService myUdfService;@Overridepublic Object call(Hints readOnly, Object... params) {return myUdfService.myName();}
    }

    在Dataway管理界面,可以通过以下方式调用自定义UDF:

    import 'com.demo.udf.MyNameUdf' as myNameUdf;
    return myNameUdf();

    说明 :在使用Dataway之前,需要确保已正确安装和配置了数据库,并且数据库中已存在所需的表和数据。同时,还需要根据实际需求对Dataway的配置进行调整,如设置接口的安全性、缓存等。

    Dataway的使用流程大致是先引入依赖,再进行相关配置,最后通过其管理界面或代码方式创建接口。它能极大简化数据接口的开发过程,提高开发效率。

使用Dataway管理界面自测

  • 进入管理界面:应用启动后,在浏览器中输入http://localhost:8080/interface-ui/访问Dataway管理界面。

  • 新建接口:点击“新建接口”按钮,输入接口名称、路径等信息,选择使用DataQL或SQL模式编写接口逻辑。

  • 编写接口代码:在查询编辑器中编写DataQL或SQL代码,例如使用DataQL编写查询代码。

  • 点击测试:保存接口后,点击“测试”按钮,即可在管理界面中查看接口的返回结果,检查接口是否按预期工作。

使用Dataway管理界面冒烟测试

  • 进入管理界面:访问http://localhost:8080/interface-ui/

  • 选择要测试的接口:找到已创建但尚未发布的接口,点击“冒烟测试”按钮。

  • 查看测试结果:根据冒烟测试的结果,确认接口是否符合基本要求,若通过则可以点击“发布”按钮正式发布接口。

使用Postman或其他HTTP客户端测试

  • 获取接口地址:接口发布后,根据配置的API路径和接口路径拼接完整的接口地址,如http://localhost:8080/api/demo

  • 发送HTTP请求:使用Postman或其他HTTP客户端工具,按照接口的请求方法(如GET、POST等)发送请求。如果接口需要参数,需在请求中包含相应的参数。

  • 检查响应结果:查看HTTP客户端返回的响应结果,确认接口的返回数据是否正确,HTTP状态码是否为200等,以验证接口是否正常工作。

 

相关文章:

  • OpenHarmony OS 5.0与Android 13显示框架对比
  • flutter_slidable 插件使用
  • 精益数据分析(15/126):解锁数据分析关键方法,驱动业务增长
  • 使用Python+OpenCV对视频抽帧保存为JPG图像
  • MongoDB常用命令
  • 【JAVA】十三、基础知识“接口”精细讲解!(二)(新手友好版~)
  • uniapp-商城-33-shop 布局搜索页面以及u-search
  • 云原生--基础篇-3--云原生概述(云、原生、云计算、核心组成、核心特点)
  • 【2025最新Java面试八股】如何理解MySQL的MVCC机制?
  • DeepSeek和Excel结合生成动态图表
  • 「数据可视化 D3系列」入门第十二章:树状图详解与实践
  • K8S探针的应用
  • Rook 部署 Ceph 集群及 Kubernetes 存储对接实战
  • 【微服务】SpringBoot制作Docker镜像接入SkyWalking详解
  • Anaconda 与 Miniconda 的差异详解
  • [论文阅读]ConfusedPilot: Confused Deputy Risks in RAG-based LLMs
  • 树莓派学习专题<8>:使用V4L2驱动获取摄像头数据--获取摄像头支持的分辨率
  • 进行性核上性麻痹饮食指南:科学膳食提升生活质量
  • SQL中函数
  • C# 跨进程 临界区 互斥 进程锁
  • 北京地铁5号线仗义执言女乘客发文:同理心无比重要,希望就此平息
  • 广东省东莞市委原书记、市人大常委会原主任徐建华被开除党籍
  • 3月赴美外国游客数量加速下滑
  • 数智时代出版专业技能人才培养研讨会在沪举行
  • 诺奖得主等数十位经济学家发表宣言反对美关税政策
  • 部分人员无资质展业、投资建议无合理依据,天相财富被责令改正