- 时间:2022-08-19 00:43 编辑: 来源: 阅读:306
- 扫一扫,手机访问
摘要:兼容完美的老项目!数据通路4.1.6返回对结构的完全控制
《网站源码》
Dataway细节Dataway是一个基于DataQL服务聚合能力的应用程序接口配置工具。 以便用户可以配置满足需求的接口,而无需开发任何代码。 整个界面配置、测试、抽测、发布。 通过Dataway提供的UI一站式完成。 UI将以Jar包的形式提供并集成到应用程序中,并与应用程序共享同一个http端口,因此应用程序不需要单独为Dataway开发新的管理端口。 这种嵌入式集成模式的好处是可以让大部分老项目直接应用Dataway而不被入侵。 从而提高旧项目的迭代效率,大大降低企业项目的R&D成本。 Dataway提供了作为工具的DataQL配置功能。 R&D模式的这种变化使得相当多的需求开发场景只要配置好就可以交付。 从而避免了从数据访问到前台接口的一系列开发任务,比如Mapper、BO、VO、DO、DAO、Service、Controller,这些都是不必要的。 在“Dataway让Spring Boot不再需要控制器、服务、DAO、映射器”这篇文章中,我们详细介绍了如何使用它。 配置接口以避免开发工作的数据方式 本文详细介绍了刚刚发布的新版本Dataway。 4 . 1 . 6 2020年5月10日正式发布,整体Dataway迭代速度还是很快的。 如果你是老的Dataway项目,比如4.1.3和4.1.4。 那么,你需要先看这篇文章来更新版本:在4.1.5之前,Dataway的所有接口调用都会有一个API标准的返回值结构,比如少数老项目或者当前迭代的项目都有自己的返回值格式定义。 这样一来,Dataway在项目的集成上就比较麻烦了。 为此,少数问题正在咨询如何处理这一问题。 比如“如何摆脱返回结果的默认结构——zycgit/hasor/issues/40”,4.1.6之后,你完全可以通过以下两种方式自行设置返回的结构。 默认情况下,模板的内容如上所示。 {"success":"@resultStatus ",//执行状态:失败或成功" message":"@resultMessage ",// message" code":"@resultCode ",//执行推出代码" lifecycle time": "@ timelifecycle ",//整个执行需要时间,单位为" execution time ":" @ time execution " ,//实际执行DataQL的消耗时间,单位为" value":"@resultData"//执行结果。 }其中lifeCycleTime-executionTime可以粗略计算 参数解析和DataQL查询编译的时间消耗 设置自己的结构:模板模式如果我们要改变默认返回的结构,比如如下:{"success":true," message ":"操作成功!",“码数”:200,“结果”:...}此时结构可配置如下:{"success":"@resultStatus ",//执行状态:失败或成功" message":"@resultMessage ",// message" code":"@resultCode ",// }执行之后,你会发现我们需要的结果出现了。 设置自己的结构:code方法有时候模板中想要输出的内容中并没有提供模板的内置变量,比如我想输出当前时间戳。 这时候我们就可以使用代码的形式,通过它我们可以自己设置返回结构。 首先,我们关闭数据通道上的API结构。 此时,所有返回的执行结果都没有外部结构。 然后由ResultProcessChainSpi自己封装我们需要的结构。 API binder . bindspilistener(resultprocesschainspi . class,newResultProcessChainSpi(){ publicObjectcallAfter(booleanformPre,ApiInfo apiInfo,Object result){ if(form pre){ return result;//如果前面的拦网解决了 那么后挡就不解决了。 } returnnewHashMap(){ { put(" method ",API info . get method());put("path ",API info . geta pipath());put(“结果”,结果);}};} publicObjectcallError(booleanformPre,ApiInfo apiInfo,Throwable e){ returnnewHashMap(){ { put(" method ",API info . get method());put("path ",API info . geta pipath());put("errorMessage ",e . getmessage());}};}});再一次,我们可以看到我们需要的结果。 提示:如何批量关闭结构?首先,Dataway页面不提供批量设置结构的能力。 但是,不提供页面并不代表其他地方做不到。 这里有个办法:apibinder。BindSpiListener(resultprocesschainspi . class,NewResultProcessChainspi(){ PublicObjectCallAfter(BooleanForm Pre,API Info API Info,Objectresult) {if(....){ Map option Map = API info . getoptionmap();optionMap.put("resultStructure ",false);//手动设置关闭的API info . set option map(option map);returnResult.ok(结果);}//....}});提供这个方法的问题在这里:zycgit/hasor/issues/40。最后放一些有用的链接:-Dataway官方手册:OSC上https://www.hasor.net/web/dataway/about.html- Dataway的项目地址,欢迎: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