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.mzph.cn/diannao/80008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程互斥的软件实现方法

单标志法 算法思想&#xff1a;两个进程在访问完临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予 int turn 0; //turn 表示当前允许进入临界区的进程号P0 进程&#xff1a; while (turn ! 0); ① //进入区 critical …

力扣150题-- 汇总区间和合并区间

Day 27 题目描述 思路 做法&#xff1a; 特殊处理空数组和数组只有一个元素的情况设置beg&#xff0c;end标记范围的起始和结束&#xff0c;x用来比较元素是否有序&#xff08;初始end和beg都指向nums[0[,x为nums[0]1&#xff09;遍历数组如果当前元素等于x&#xff0c;说明…

【c++深入系列】:万字string详解(附有sso优化版本的string模拟实现源码)

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 当你想放弃时&#xff0c;想想为什么当初坚持走到了这里 ★★★ 本文前置知识&#xff1a; 类和对象&#xff08;上&#xff09; 类和对…

Spark-Streaming简介和核心编程

Spark-Streaming简介 概述&#xff1a;用于流式数据处理&#xff0c;支持Kafka、Flume等多种数据输入源&#xff0c;可使用Spark原语运算&#xff0c;结果能保存到HDFS、数据库等。它以DStream&#xff08;离散化流&#xff09;为抽象表示&#xff0c;是RDD在实时场景的封装&am…

verilog中的约束信息

1、保持约束 keep&#xff1a;当编译器在对FPGA设计进行映射时&#xff0c;一些线网将会被吸收到逻辑块中。 (* KEEP "{TRUE | FALSE}" *) keep_hierarchy:vivado默认会把设计变成一级一级模块化的调用转换为一个没有子模块的超大模块。这个约束会保留部分层级关系…

Missashe考研日记-day24

Missashe考研日记-day24 1 专业课408 学习时间&#xff1a;2h30min学习内容&#xff1a; 今天把剩下的两个经典同步问题和管程部分的课看了&#xff0c;然后做课后习题。这部分的重点在PV大题&#xff0c;很多很经典&#xff0c;不过第一轮不打算做大题&#xff0c;把选择题做…

力扣每日打卡17 49. 字母异位词分组 (中等)

力扣 49. 字母异位词分组 中等 前言一、题目内容二、解题方法1. 哈希函数2.官方题解2.1 前言2.2 方法一&#xff1a;排序2.2 方法二&#xff1a;计数 前言 这是刷算法题的第十七天&#xff0c;用到的语言是JS 题目&#xff1a;力扣 49. 字母异位词分组 (中等) 一、题目内容 给…

C#抽象类和虚方法的作用是什么?

抽象类 (abstract class)&#xff1a; 不能直接实例化&#xff0c;只能被继承。 用来定义一套基础框架和规范&#xff0c;强制子类必须实现某些方法&#xff08;抽象方法&#xff09;。 可用来封装一些共通的逻辑&#xff0c;减少代码重复。 虚方法 (virtual)&#xff1a; …

PowerBi中ALLEXCEPT怎么使用?

在 Power BI 的 DAX 中&#xff0c;ALLEXCEPT() 是一个非常重要的函数&#xff0c;用来实现**“在保留部分筛选条件的前提下&#xff0c;移除其他所有筛选器”**&#xff0c;它常用于 同比、占比、累计汇总 等分析中。 ✅ 一、ALLEXCEPT 是什么意思&#xff1f; 函数全称&…

IQ信号和实信号的关系与转换的matlab实现

IQ信号 IQ信号通常是指两路正交的信号(I路和Q路),在实际信号采样中,通常会进行IQ采样,将实信号转换为复基带信号进行存储。 IQ信号转实信号 IQ信号转为实信号,其实就是将IQ两路正交信号通过上变频合并为一个实数的带通信号,这通常在通信系统中用于将基带信号调制到载…

【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测(Matlab源码)

目录 效果一览程序获取程序内容代码分享研究内容基于LSTM长短期记忆神经网络的锂电池剩余寿命预测摘要关键词1. 引言1.1 研究背景1.2 研究现状与问题1.3 研究目的与意义2. 文献综述2.1 锂电池剩余寿命预测方法概述2.2 传统预测方法的优势与不足2.3 LSTM在锂电池寿命预测中的应用…

具身智能的理论基础

引言 在人工智能与认知科学快速发展的背景下&#xff0c;“具身智能”&#xff08;Embodied Intelligence&#xff09;这一概念日益受到重视。具身智能是指智能体的认知能力不仅源于其大脑&#xff08;或中央处理单元&#xff09;&#xff0c;更根植于其身体的结构、感官与其所…

【数据结构】励志大厂版·初级(二刷复习)双链表

前引&#xff1a;今天学习的双链表属于链表结构中最复杂的一种&#xff08;带头双向循环链表&#xff09;&#xff0c;按照安排&#xff0c;我们会先进行复习&#xff0c;如何实现双链表&#xff0c;如基本的头插、头删、尾删、尾插&#xff0c;掌握每个细节&#xff0c;随后进…

CSS `display` 属性详解(完整版)

CSS display 属性详解&#xff08;完整版&#xff09; 1. 属性值及特性详解 display 属性控制元素的布局类型和生成的框类型&#xff0c;以下是 所有有效值 及其特性&#xff1a; 1.1 基础类型 值描述布局行为是否生成块级框典型用途block元素独占一行&#xff0c;宽度自动撑…

【数据结构 · 初阶】- 堆的实现

目录 一.初始化 二.插入 三.删除&#xff08;堆顶、根&#xff09; 四.整体代码 Heap.h Test.c Heap.c 我们使用顺序结构实现完全二叉树&#xff0c;也就是堆的实现 以前学的数据结构只是单纯的存储数据。堆除了存储数据&#xff0c;还有其他的价值——排序。是一个功能…

qt.tlsbackend.ossl: Failed to load libssl/libcrypto.

我的环境是windows&#xff0c;QT6.3.2&#xff08;msvc2019_64/mingw_64&#xff09; 出错原因 QT没有正确加载OpenSSL。 解决过程 1、确保安装的有openssl。 文章结尾有个注意&#xff0c;是其他方式安装过openssl&#xff0c;环境变量有&#xff0c;但是QT找不到的问题。…

【Linux】用户权限

shell命令 1. Linux本质上是一个操作系统&#xff0c;但是一般的用户不能直接使用它&#xff0c;而是需要通过外壳程序shell&#xff0c;来与Linux内核进行沟通。 2. shell的简单定义&#xff1a;命令行解释器。主要包含以下作用&#xff1a; 将使用者的命令翻译给核心处理。将…

赛灵思 XC7K325T-2FFG900I FPGA Xilinx Kintex‑7

XC7K325T-2FFG900I 是 Xilinx Kintex‑7 系列中一款工业级 (I) 高性能 FPGA&#xff0c;基于 28 nm HKMG HPL 工艺制程&#xff0c;核心电压标称 1.0 V&#xff0c;I/O 电压可在 0.97 V–1.03 V 之间灵活配置&#xff0c;并可在 –40 C 至 100 C 温度范围内稳定运行。该器件提供…

【题解-Acwing】847. 图中点的层次

题目:847. 图中点的层次 题目描述 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。 所有边的长度都是 1,点的编号为 1∼n。 请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1 。 输入 第一行包含两个整数 n 和 m。 接下来 m 行…

css图片设为灰色

使用filter方式将图片设置为灰色 普通图片使用&#xff1a;filter: saturate(0); 纯白图片使用&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"width…