System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机软件开发,尤其涉及一种基于mql语言封装的动态api查询方法及系统。
技术介绍
1、在当今的软件开发领域,数据管理和api设计是核心组成部分,尤其是在多变的客户端需求和服务器资源优化之间找到平衡点。主要的技术解决方案包括:
2、restful api:目前最广泛使用的api设计方法之一,它依赖于无状态、客户-服务器、可缓存的通信协议。restful api的主要优点是简单、易于理解和实现,且通常基于http标准,确保了良好的互操作性。restful api的缺点:数据冗余:客户端可能需要从多个端点获取数据,这可能导致相同的数据在多个请求之间被重复发送。固定的数据结构:restfulapi通常返回预定义和固定的数据结构,这限制了前端在处理和展示数据时的灵活性。多请求问题:对于复杂的界面,需要多个api调用来收集足够的数据,增加了网络延迟和加载时间。
3、graphql:作为一个数据查询语言,graphql允许客户端精确地指定他们需要的数据,有效避免了过度(over-fetching)和欠载(under-fetching)取数据的问题。它通过使用类型系统来描述数据,允许客户端构造复杂的查询,精确获取所需信息。graphql的缺点:性能问题:如果不正确管理,复杂的查询可能会导致服务器性能问题。缓存复杂性:由于每个查询都可能是唯一的,标准的http缓存策略难以直接应用于graphql。过度灵活性:虽然灵活性为前端提供了便利,但也可能导致api滥用,比如请求过多的数据。实现过于复杂:难以融入现有
技术实现思路
1、本专利技术的目的在于提供一种基于mql语言封装的动态api查询方法及系统,通过结合restful api的规范性与graphql的灵活查询特性,实现数据查询更加简单、高效、低耗。该方法允许前端精确定义查询需求,后端自动化处理,优化整个数据交互过程。
2、本专利技术采用的技术方案是:
3、一种基于mql语言封装的动态api查询方法,其包括以下步骤:
4、步骤1,定义的mql语法,同时生成对动态api查询请求进行mql语法解析的词法解析器;
5、进一步地,使用antrl进行词法解析器,编写对应mql语法解析程序逻辑以便生成词法解析器。
6、步骤2,构建middleexpression中间模型,将mql语法转换成中间表达式模型对象程序逻辑;
7、步骤3,根据选定的orm模型将middleexpression中间模型转换为对应orm的查询对象的程序逻辑;
8、步骤4,将orm的查询对象的控制器api对象转换为符合openapi规范的mql接口文档的程序逻辑;
9、进一步的,采用接口定义的方式自动生成openapi规范的mql接口文档的程序逻辑。
10、步骤5,结合mql接口文档的程序逻辑定义需要实现的mql查询的程序接口;
11、进一步地,实现mql查询的程序接口包括确定请求字段、排序字段范围、查询字段以及相应字段的查询操作符。
12、步骤6,请求侧根据mql文档构建对应请求对象,服务侧经过mql词法解析转化middleexpression中间表达式,将middleexpression转化成orm对象后直接通过orm对象添加自定义处理逻辑;
13、进一步地,步骤6中添加自定义处理逻辑包括添加自定义数据权限过滤。
14、步骤7,将orm对象转化为符合请求期望结果的mqlresult对象,并序列化为符合请求需要的数据范围字段返回得到查询结果。
15、一种自研mql语言封装动态api查询系统,其包括:
16、api 服务:提供sdk内嵌入应用服务进程上,实现请求的接收解析与中间链路处理,最终将动态api查询结果返回给请求的调用者;
17、mql词法分析引擎:定义mql语法并将请求中的mql语法校验并转化为middleexpression中间模型对象;
18、orm翻译器:根据配置将middleexpression中间模型对象翻译为对应的orm扩展查询对象,以便通过对orm扩展查询对象的加工实现自定义逻辑;
19、mqlresult解析器:通过对orm扩展查询对象的执行结果进行加工转化为符合mql表达式定义的结构类型,再序列化后将结果返回给请求端;
20、mql对象控制器:定义mql请求的路径、查询范围、排序范围、过滤条件、过滤条件允许的操作符及返回的结果对象类型,限定接口的能力范围;
21、mql api生成器:将mql对象控制器的api对象自动翻译为符合openapi规范的接口文档。
22、进一步地,mql词法分析引擎antrl进行词法解析器。
23、本专利技术采用以上技术方案,与现有技术相比具有如下技术优点:1、基于需求的数据获取:通过允许前端精确定义所需数据,避免不必要的数据传输,从而提高数据处理的准确性,并降低系统的资源消耗。2、自动化查询构建:自定义mql语言,根据前端请求动态构建动态orm对象,减少开发和维护工作量,同时提高api的适应性和效率。3、提高开发效率:简化数据查询实现,减少前后端沟通与调试时间,加速开发流程。4、增强用户体验:为用户提供更快的应用响应速度和更准确的数据加载,改善交互体验。5、改善可扩展性和可维护性:设计易于扩展和维护的api,适应未来业务的增长与变化,同时保持系统的稳定性和可靠性。
本文档来自技高网...【技术保护点】
1.一种基于MQL语言封装的动态API查询方法,其特征在于:其包括以下步骤:
2.根据权利要求1所述的一种基于MQL语言封装的动态API查询方法,其特征在于:步骤1中使用ANTRL进行词法解析器,编写对应MQL语法解析程序逻辑以便生成词法解析器。
3.根据权利要求1所述的一种基于MQL语言封装的动态API查询方法,其特征在于:步骤4中采用接口定义的方式自动生成OpenApi规范的MQL接口文档的程序逻辑。
4.根据权利要求1所述的一种基于MQL语言封装的动态API查询方法,其特征在于:步骤5中实现MQL查询的程序接口的内容包括确定请求字段、排序字段范围、查询字段以及相应字段的查询操作符。
5.根据权利要求1所述的一种基于MQL语言封装的动态API查询方法,其特征在于:步骤6中添加自定义处理逻辑包括添加自定义数据权限过滤。
6.一种自研MQL语言封装动态API查询系统,采用了权利要求1至5任一项所述的一种基于MQL语言封装的动态API查询方法,其特征在于:系统包括:
7.根据权利要求6所述的一种基于MQL语言封
...【技术特征摘要】
1.一种基于mql语言封装的动态api查询方法,其特征在于:其包括以下步骤:
2.根据权利要求1所述的一种基于mql语言封装的动态api查询方法,其特征在于:步骤1中使用antrl进行词法解析器,编写对应mql语法解析程序逻辑以便生成词法解析器。
3.根据权利要求1所述的一种基于mql语言封装的动态api查询方法,其特征在于:步骤4中采用接口定义的方式自动生成openapi规范的mql接口文档的程序逻辑。
4.根据权利要求1所述的一种基于mql语言封装的动态api查询方法,其特征在于:步骤5中实现...
【专利技术属性】
技术研发人员:陈章洪,杨维校,池希水,罗丹,
申请(专利权)人:中电福富信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。