一种基于本体的RESTfulAPI代码自动生成方法与流程

文档序号:14713983发布日期:2018-06-16 00:58阅读:1076来源:国知局
一种基于本体的RESTful API代码自动生成方法与流程

本发明计算机技术领域,尤其涉及一种基于本体的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前端数据功能需求,将描述过程的参数传递给预先定义的RESTful API代码模版中,最终形成对应需求的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前端需求。

上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1