法律状态公告日
法律状态信息
法律状态
2020-06-05
授权
授权
2018-07-13
实质审查的生效 IPC(主分类):G06F8/34 申请日:20180115
实质审查的生效
2018-06-15
公开
公开
技术领域
本发明计算机技术领域,尤其涉及一种基于本体的RESTful API代码自动生成方法。
背景技术
RESTful架构是目前流行的互联网软件架构,它结构清晰、符合标准、易于理解、扩展方便,得到越来越多网站以及应用的采用。但是REST资源化的请求适合于面向简单的请求,对于具有复杂关联的请求,后端必须添加一个新的接口专门针对这种特殊请求进行响应。随着Web/Mobile端越来越复杂的数据需求,后端的RESTful API开发人员需要针对需求进行繁琐的数据查询、数据组合以及文档编辑工作,极易出现错误。
类似的API代码自动生成工具有很多,比如rails自带的scaffold功能,以及Active Admin/Rails Admin等,但是这些都是一套完整的系统,前后端不分离,修改系统页面困难而且只支持单表的CRUD操作。而Kaola在此之上对此做了改进,能够支持多表之间的关联操作而且前后端分离。但是Kaola也是基于ruby on rails开发的,对于Windows操作系统以及mysql数据库之外不能做到完全兼容。而且Kaola提供了数据库中所有表的CRUD接口,接口能力宽泛不能直接暴露在网络上必须部署在一个API网关后面,无法面对复杂的Web/Mobile端需求制定针对性高效的接口。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于本体的RESTful API代码自动生成方法。
本发明的目的是通过以下技术特征来实现的:一种基于本体的RESTful API代码自动生成方法,该方法包括以下步骤:
(1)利用本体模型描述数据库底层的数据关系,具体步骤如下:
(1.1)通过语义转换工具D2R自动将关系型数据库的表数据结构转换成为虚拟的RDF图,其中将表转换为本体建模元语中的概念(Concept)或类(Class),将字段转换为类中的属性;
(1.2)向本体模型中添加函数(Function)以描述表中的主键与非主键间的关系,函数(Function)的形式定义为F:C1×C2×…×Cn-1→Cn,在该关系中,第n个元素由前n-1个元素唯一确定;
(1.3)向本体模型中添加对象属性,描述类与类之间的关系;
(2)通过前端技术将本体模型可视化,通过拖拽可视化模型组件描述Web/Mobile前端数据功能需求,将描述过程的参数传递给预先定义的RESTful API代码模版中,最终形成对应需求的RESTful API代码文件,具体步骤如下:
(2.1)将本体模型中的每个概念(Concept)或类(Class)通过前端技术可视化形成多个单独的model组件;
(2.2)将HTTP动词如GET、POST等预先设置为Verb组件;
(2.3)预先定义RESTful API代码模板,将RESTful API代码模板设置为js组件,用于根据model组件和Verb组件传递的参数自动生成JavaScript代码;
(2.4)设置content组件,用于将js组件生成的JavaScript代码解析生成相应的字符文件。
进一步地,所述步骤(1.3)中类与类之间的关系包括一对多以及多对多的关系。
进一步地,所述步骤(1)中,将本体模型以XML文件格式形式导出。
进一步地,所述步骤(2)中,本体模型的可视化可采用bootstrap、jsplumb生成图形化界面。
进一步地,所述步骤(2.3)中,组件之间参数传输以JSON格式进行。
进一步地,每个model组件对应关系型数据库中的一个表,描述了表内部的关系以及表与表之间的关系。
进一步地,每个Verb组件对应HTTP协议中的一种API互动方式,比如POST或GET。
进一步地,所述步骤(2)中,拖拽可视化模型组件描述Web/Mobile前端数据功能需求具体为:首先添加需求中涉及到的model组件和Verb组件,然后通过连线将组件进行连接。
进一步地,所述步骤(2.3)中,根据model组件和Verb组件传递的参数自动生成JavaScript代码,具体为:首先利用hibernate将model组件和Verb组件传递的参数自动生成sql查询语句,然后将model组件和Verb组件传递的参数以及生成的sql查询语句一起传递给RESTfulAPI代码模板。
本发明的有益效果是:本发明借助本体语义技术,通过对数据库进行本体建模,用本体语言描述数据库结构关系,并将模型可视化。预先添加HTTP协议中的动词可视化组件,对可视化后的数据库模块组件进行添加、拖拽、连接等操作描述特定RESTful API想要实现的功能。相比于其他代码自动生成方法需要手动录入每个表的具体结构,采用本体建模方式能更准确方便地描述数据库底层的关系,生成的树状结构模型结构化、计算机可读,能够很好的应对前端多表联查的复杂需求。底层数据库可视化,以拖拽、连接组件的方式描述Web/Mobile前端数据功能需求更加的清晰明确不易出错,同时大大减少了后端开发人员的工作量,甚至前端开发人员也可以根据自己的需求自定义接口。
附图说明
图1为基于本体的RESTful API代码自动生成方法流程图;
图2为RESTful API代码自动生成具体实施过程。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
如图1、2所示,本实施例提供的一种基于本体的RESTful API代码自动生成方法,该方法包括以下步骤:
(1)利用本体模型描述数据库底层的数据关系,具体步骤如下:
(1.1)通过语义转换工具D2R自动将关系型数据库的表数据结构转换成为虚拟的RDF图,其中将表转换为本体建模元语中的概念(Concept)或类(Class),将字段转换为类中的属性;
(1.2)向本体模型中添加函数(Function)以描述表中的主键与非主键间的关系,函数(Function)的形式定义为F:C1×C2×…×Cn-1→Cn,在该关系中,第n个元素由前n-1个元素唯一确定;
(1.3)向本体模型中添加对象属性,描述类与类之间的关系,包括一对多以及多对多的关系;
(1.4)将本体模型以XML文件格式形式导出;
(2)通过前端技术bootstrap、jsplumb等将本体模型可视化,通过拖拽可视化模型组件描述Web/Mobile前端数据功能需求,将描述过程的参数传递给预先定义的RESTfulAPI代码模版中,最终形成对应需求的RESTful API代码文件,具体步骤如下:
(2.1)将本体模型中的每个概念(Concept)或类(Class)通过前端技术可视化形成多个单独的model组件,每个model组件对应关系型数据库中的一个表,描述了表内部的关系以及表与表之间的关系;
(2.2)将HTTP动词如GET、POST等预先设置为Verb组件;
(2.3)预先定义RESTful API代码模板,将RESTful API代码模板设置为js组件,用于根据model组件和Verb组件传递的参数自动生成JavaScript代码,其中组件之间是以JSON格式来传递参数的;根据model组件和Verb组件传递的参数自动生成JavaScript代码,具体为:首先利用hibernate将model组件和Verb组件传递的参数自动生成sql查询语句,然后将model组件和Verb组件传递的参数以及生成的sql查询语句一起传递给RESTful API代码模板;
(2.4)设置content组件,用于将js组件生成的JavaScript代码解析生成相应的字符文件。
该步骤中,通过拖拽添加Web/Mobile前端需求涉及到的可视化模型组件,具体为:首先添加需求中涉及到的model组件和Verb组件,比如添加表A与表B相对应的model组件,以及HTTP协议中GET或者POST对应的Verb组件;然后添加代码模板的js组件以及content组件;最后将各组件之间通过连线连接起来描述Web/Mobile前端需求。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
机译: 基于本体的系统优化方法,包括将动态依赖于应用程序的相关性分配给本体元素,并利用相关性来确定基于本体的系统使用部分本体的优先级
机译: 自动翻译本体的装置,基于本体的文档汇总方法和装置,基于本体的文档推荐方法及装置
机译: 自动生成文档的本体的装置,基于本体的用于汇总文档的装置和方法,基于本体的用于推荐文档的装置和方法