无需代码!通过 Dataway 配置一个带有分页查询的接口

  • 时间:2020-11-08 01:51 作者:哈库纳 来源: 阅读:434
  • 扫一扫,手机访问
摘要:Dataway详情Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。 整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一

Dataway详情

Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。 整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开拓新的管理端口。

这种内嵌集成方式模式的优点是,可以使得大部分老项目都可以在无侵入的情况下直接应用 Dataway。进而改进老项目的迭代效率,大大减少企业项目研发成本。

Dataway 工具化的提供 DataQL 配置能力。这种研发模式的变革使得,相当多的需求开发场景只要要配置就可完成交付。 从而避免了从数据存取到前台接口之间的一系列开发任务,例如:Mapper、BO、VO、DO、DAO、Service、Controller 统统不在需要。

在《Dataway让Spring Boot不在需要Controller、Service、DAO、Mapper》文章中,我们详情了如何使用。Dataway 来配置接口避免开发工作。这篇文章来详情一下刚刚发布的新版本 Dataway。4.1.6 正式发布的时间是2020年 05月 10日,整体 Dataway 迭代速度还是非常快的。

假如你是老版本的 Dataway 工程,例如 4.1.3、4.1.4。那么需要先阅读一下这篇文章做一下版本更新:《Dataway 4.1.5 以上版本更新指南》

老项目

在 4.1.5 之前,所有 Dataway 的接口调用都会有一个 API 标准返回结构,例如:

少量老的项目或者者目前正在迭代的项目,有自己的返回值格式定义。这样一来 Dataway 在项目的融入上就比较麻烦。为此有少量 issue 在咨询如何处理这个问题。例如:

《如何把返回结果的默认结构去掉-  zycgit/hasor/issues/40》

默认结构详情

在 4.1.6 之后可以通过下面两种方式来完全自己设置返回结构。

默认情况下,模版的内容如上所示。

{"success":"@resultStatus",// 执行状态:失败还是成功"message":"@resultMessage",// 消息"code":"@resultCode",// 执行推出码"lifeCycleTime":"@timeLifeCycle",// 整个执行消耗时间,单位毫秒"executionTime":"@timeExecution",// 真正执行 DataQL 的消耗时间,单位毫秒"value":"@resultData"// 执行结果。}

其中  lifeCycleTime - executionTime ,可以粗略算出。参数解析和 DataQL 查询编译的消耗时间。

自己设置结构:模版方式

假如我们要改变默认返回的结构,比方下面这种:

{"success":true,"message":"操作成功!","code":200,"result": ....}

这时候即可以配置 Structure 为如下内容:

{"success":"@resultStatus",// 执行状态:失败还是成功"message":"@resultMessage",// 消息"code":"@resultCode",// 执行推出码"value":"@resultData"// 执行结果。}

在执行一下就会发现出现我们需要的结果了。

自己设置结构:代码方式

有时候模版中想要输出的内容中模版的内置 变量并没有提供,例如:我想输出当前时间戳。

那么这个时候即可以采用代码形式,通过代码我们自己设置返回结构。

首先,我们在Dataway 上把 API 的 Structure 关掉。这时所有执行的返回结果都没有外层结构了。

而后通过 ResultProcessChainSpi 自行封装我们需要的结构。

apiBinder.bindSpiListener(ResultProcessChainSpi.class,newResultProcessChainSpi(){publicObjectcallAfter(booleanformPre, ApiInfo apiInfo, Object result){if(formPre) {returnresult;//假如前置阻拦器解决了。那么后置阻拦器就不解决。}returnnewHashMap() {{            put("method", apiInfo.getMethod());            put("path", apiInfo.getApiPath());            put("result", result);        }};    }publicObjectcallError(booleanformPre, ApiInfo apiInfo, Throwable e){returnnewHashMap() {{            put("method", apiInfo.getMethod());            put("path", apiInfo.getApiPath());            put("errorMessage", e.getMessage());        }};    }});

再次执行即可以看到我们需要的结果了。

小技巧:如何批量关掉 Structure 

首先 Dataway 页面上并未提供批量设置  Structure 的能力。不过页面不提供不代表,其它地方不能做到。这里提供一个办法:

apiBinder.bindSpiListener(ResultProcessChainSpi.class,newResultProcessChainSpi() {publicObjectcallAfter(booleanformPre, ApiInfo apiInfo,Objectresult) {if(....) {            Map optionMap = apiInfo.getOptionMap();            optionMap.put("resultStructure",false);// 手工设置关闭apiInfo.setOptionMap(optionMap);returnResult.ok(result);        }//....    }});

提供这个办法的 Issue 在这里: zycgit/hasor/issues/40


最后放几个有用的连接:

- Dataway 官方手册:https://www.hasor.net/web/dataway/about.html

- Dataway 在 OSC 上的项目地址,欢迎收藏:https://www.oschina.net/p/dataway

- DataQL 手册地址:https://www.hasor.net/web/dataql/what_is_dataql.html

- Hasor 项目的首页:https://www.hasor.net/web/index.html

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
【系统环境|】ZORRO佐罗软件安装教程及一键新机使用方法详细简介(2023-02-10 21:56)
【系统环境|】阿里云 centos 云盘扩容命令(2023-01-10 16:35)
【系统环境|】补单系统搭建补单源码搭建(2022-05-18 11:35)
【系统环境|服务器应用】高端显卡再度登上热搜,竟然是因为“断崖式”的降价(2022-04-12 19:47)
【系统环境|软件环境】一步步教你开发、部署第一个去中心化应用 - 宠物商店(2022-03-15 15:13)
【系统环境|软件环境】循序渐进!一文学会高性能开发十大必需掌握的核心技术。(2022-03-15 15:13)
【系统环境|软件环境】Python游戏开发,pygame模块,Python实现贪吃蛇小游戏(2022-03-15 15:13)
手机二维码手机访问领取大礼包
返回顶部