当前位置: 首页 > 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等,以验证接口是否正常工作。

 

http://www.xdnf.cn/news/75799.html

相关文章:

  • 【美化vim】
  • Element Plus表格组件深度解析:构建高性能企业级数据视图
  • 【C++ 类和数据抽象】构造函数
  • 智能体MCP 实现数据可视化分析
  • Java 安全:如何防止 SQL 注入与 XSS 攻击?
  • GAEA的技术优势:分层加密与去中心化数据治理
  • 《C++ 模板:泛型编程的核心》
  • 基于javaweb的SSM+Maven小区失物招领系统设计与实现(源码+文档+部署讲解)
  • 超越Dify工作流:如何通过修改QwenAgent的Function Call及ReAct方法实现对日期时间的高效意图识别
  • 【MySQL】005.MySQL表的约束(上)
  • 2011-2020年 上市公司彭博ESG综合得分、环境得分、​治理得分统计数据表
  • Ollama 实战手册
  • 软考软件设计师考试情况与大纲概述
  • 【C语言】初阶算法相关习题(一)
  • Docker 部署 PostgreSQL 数据库
  • 记录学习的第三十天
  • 20.4 显示数据库数据
  • Centos 、Linux 基础运维命令
  • 【程序员 NLP 入门】词嵌入 - 如何基于计数的方法表示文本? (★小白必会版★)
  • MacOS 10.15上能跑大语言模型吗?
  • 用Java实现简易区块链:从零开始的探索
  • Mongodb分布式文件存储数据库
  • 相对论大师-记录型正负性质BFS/图论-链表/数据结构
  • sqoop的参数及初体验
  • 【MCP Node.js SDK 全栈进阶指南】初级篇(1):MCP开发环境搭建详解
  • chromedp 反反爬设计方案
  • 美乐迪电玩大厅加载机制与 RoomList 配置结构分析
  • JavaScript之深浅拷贝
  • 安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验
  • 【安装部署】Linux下最简单的 pytorch3d 安装