CN108170426B - 一种基于本体的RESTful API代码自动生成方法 - Google Patents
一种基于本体的RESTful API代码自动生成方法 Download PDFInfo
- Publication number
- CN108170426B CN108170426B CN201810036950.8A CN201810036950A CN108170426B CN 108170426 B CN108170426 B CN 108170426B CN 201810036950 A CN201810036950 A CN 201810036950A CN 108170426 B CN108170426 B CN 108170426B
- Authority
- CN
- China
- Prior art keywords
- ontology
- component
- model
- restful api
- verb
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012800 visualization Methods 0.000 claims abstract description 9
- 238000005516 engineering process Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 230000003993 interaction Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 14
- 238000013550 semantic technology Methods 0.000 abstract description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于本体的RESTful API代码自动生成方法,借助本体语义技术通过对数据库进行本体建模,用本体语言描述数据库结构关系,并将模型可视化。预先添加HTTP协议中的动词可视化组件,对可视化后的数据库模块组件进行添加、拖拽、连接等操作描述特定RESTful API想要实现的功能。相比其他代码自动生成方法需要手动录入每个表具体结构,采用本体建模方式能更准确地描述数据库底层的关系,生成的树状结构模型结构化、计算机可读,能够很好的应对前端多表联查的复杂需求。底层数据库可视化,以拖拽、连接组件的方式描述Web/Mobile前端数据功能需求更加的清晰明确不易出错,同时大大减少了后端开发人员的工作量,甚至前端开发人员也可以根据自己的需求自定义接口。
Description
技术领域
本发明计算机技术领域,尤其涉及一种基于本体的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查询语句一起传递给RESTful API代码模版。
本发明的有益效果是:本发明借助本体语义技术,通过对数据库进行本体建模,用本体语言描述数据库结构关系,并将模型可视化。预先添加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前端需求。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
Claims (9)
1.一种基于本体的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动词预先设置为Verb组件;
(2.3)预先定义RESTful API代码模版,将RESTful API代码模版设置为js组件,用于根据model组件和Verb组件传递的参数自动生成JavaScript代码;
(2.4)设置content组件,用于将js组件生成的JavaScript代码解析生成相应的字符文件。
2.根据权利要求1所述的一种基于本体的RESTful API代码自动生成方法,其特征在于,所述步骤(1.3)中类与类之间的关系包括一对多以及多对多的关系。
3.根据权利要求1所述的一种基于本体的RESTful API代码自动生成方法,其特征在于,所述步骤(1)中,将本体模型以XML文件格式形式导出。
4.根据权利要求1所述的一种基于本体的RESTful API代码自动生成方法,其特征在于,所述步骤(2)中,本体模型的可视化可采用bootstrap、jsplumb生成图形化界面。
5.根据权利要求1所述的一种基于本体的RESTful API代码自动生成方法,其特征在于,所述步骤(2.3)中,组件之间参数传输以JSON格式进行。
6.根据权利要求1所述的一种基于本体的RESTful API代码自动生成方法,其特征在于,每个model组件对应关系型数据库中的一个表,描述了表内部的关系以及表与表之间的关系。
7.根据权利要求1所述的一种基于本体的RESTful API代码自动生成方法,其特征在于,每个Verb组件对应HTTP协议中的一种API互动方式。
8.根据权利要求1所述的一种基于本体的RESTful API代码自动生成方法,其特征在于,所述步骤(2)中,拖拽可视化模型组件描述Web/Mobile前端数据功能需求具体为:首先添加需求中涉及到的model组件和Verb组件,然后通过连线将组件进行连接。
9.根据权利要求1所述的一种基于本体的RESTful API代码自动生成方法,其特征在于,所述步骤(2.3)中,根据model组件和Verb组件传递的参数自动生成JavaScript代码,具体为:首先利用hibernate将model组件和Verb组件传递的参数自动生成sql查询语句,然后将model组件和Verb组件传递的参数以及生成的sql查询语句一起传递给RESTful API代码模版。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810036950.8A CN108170426B (zh) | 2018-01-15 | 2018-01-15 | 一种基于本体的RESTful API代码自动生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810036950.8A CN108170426B (zh) | 2018-01-15 | 2018-01-15 | 一种基于本体的RESTful API代码自动生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108170426A CN108170426A (zh) | 2018-06-15 |
CN108170426B true CN108170426B (zh) | 2020-06-05 |
Family
ID=62514388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810036950.8A Active CN108170426B (zh) | 2018-01-15 | 2018-01-15 | 一种基于本体的RESTful API代码自动生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108170426B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984728B (zh) * | 2018-07-11 | 2020-11-27 | 北京奇艺世纪科技有限公司 | 一种代理类生成方法及装置 |
CN109144512B (zh) * | 2018-08-22 | 2022-05-03 | 杭州数澜科技有限公司 | 一种生成api的方法和系统 |
CN111381820A (zh) * | 2018-12-29 | 2020-07-07 | 北京数聚鑫云信息技术有限公司 | 一种基于gui自动生成api的方法及装置 |
CN109992249A (zh) * | 2019-03-06 | 2019-07-09 | 北京国舜科技股份有限公司 | 一种流式数据流程操作方法及系统 |
CN111078169B (zh) * | 2019-11-29 | 2023-09-26 | 武汉虹信技术服务有限责任公司 | 一种可视化大屏系统的前端装置及其搭建方法 |
CN114153864A (zh) * | 2020-09-07 | 2022-03-08 | 华为云计算技术有限公司 | 一种生成api的方法及装置 |
CN113590097B (zh) * | 2021-07-30 | 2022-11-29 | 中电金信软件有限公司 | 一种api接口的生成方法、装置、电子设备及存储介质 |
CN114327428A (zh) * | 2021-12-30 | 2022-04-12 | 京东方科技集团股份有限公司 | 应用程序接口编辑方法、装置、电子设备和介质 |
CN114089967A (zh) * | 2022-01-19 | 2022-02-25 | 武汉源启科技股份有限公司 | Api接口的生成方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707949A (zh) * | 2012-04-26 | 2012-10-03 | 清华大学 | 一种基于本体的可视化概念建模方法 |
CN104462460A (zh) * | 2014-12-16 | 2015-03-25 | 武汉理工大学 | 一种构造rest风格的本体标注可视化系统的方法 |
CN104572095A (zh) * | 2014-12-29 | 2015-04-29 | 天津大学 | 一种面向最终用户搭建Ajax应用的自适应方法 |
CN105278946A (zh) * | 2015-06-12 | 2016-01-27 | 浙江大学 | 一种RESTful API可视化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9294543B2 (en) * | 2014-04-09 | 2016-03-22 | International Business Machines Corporation | Generation of representational state transfer interface from application programming interfaces |
-
2018
- 2018-01-15 CN CN201810036950.8A patent/CN108170426B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707949A (zh) * | 2012-04-26 | 2012-10-03 | 清华大学 | 一种基于本体的可视化概念建模方法 |
CN104462460A (zh) * | 2014-12-16 | 2015-03-25 | 武汉理工大学 | 一种构造rest风格的本体标注可视化系统的方法 |
CN104572095A (zh) * | 2014-12-29 | 2015-04-29 | 天津大学 | 一种面向最终用户搭建Ajax应用的自适应方法 |
CN105278946A (zh) * | 2015-06-12 | 2016-01-27 | 浙江大学 | 一种RESTful API可视化方法 |
Non-Patent Citations (3)
Title |
---|
AngularJS前端框架与后端代码自动生成系统的设计与实现;郑杰;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170115(第1期);I138-209 * |
一种基于语义的RESTful Web服务匹配模型;程方 等;《重庆邮电大学学报(自然科学版)》;20160116;第26卷(第4期);546-550 * |
基于OKApi可视化RESTful服务组合建模研究与实现;孙祖汉;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160715(第7期);I138-111 * |
Also Published As
Publication number | Publication date |
---|---|
CN108170426A (zh) | 2018-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108170426B (zh) | 一种基于本体的RESTful API代码自动生成方法 | |
CN107832045B (zh) | 跨编程语言接口转换的方法和装置 | |
CN105335403B (zh) | 数据库访问方法及装置、数据库系统 | |
US9183265B2 (en) | Database query language gateway | |
CN103744891A (zh) | 一种数据查询方法和系统 | |
US20140372428A1 (en) | Integration flow database runtime | |
WO2017156916A1 (zh) | 数据访问方法和装置 | |
CN114357276A (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
WO2018228034A1 (zh) | 生成弹性搜索请求的方法和装置 | |
CN102316169A (zh) | 一种实现快速业务聚合的方法及通用业务平台 | |
CN104135536A (zh) | 一种基于json数据协议的Web管理系统数据交互方法 | |
CN109656951A (zh) | 基于表达式查询数据的方法及查询系统 | |
CN108829653A (zh) | 一种报表的生成方法、装置、设备及介质 | |
CN110750553A (zh) | 一种在业务管理系统中对数据进行自定义导出的方法 | |
CN110990011A (zh) | 一种自动化接口的数据请求方法 | |
CN102426612A (zh) | 条件对象查询方法及系统 | |
CN112882844A (zh) | 基于网络前后端的联调方法、装置及存储介质 | |
CN103324567A (zh) | 一种应用引擎的调试方法和调试系统 | |
CN103914293A (zh) | 生成页面的方法及服务器 | |
US9513878B2 (en) | Component integration by distribution of schema definition on heterogenous platforms | |
CN116910085A (zh) | 数据查询方法、装置、设备和存储介质 | |
CN112685435A (zh) | 一种基于Vue和Mybatis的表格查询方法及系统 | |
CN116578585A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN112328917A (zh) | 一种面向SQL编写生成http接口服务和数据展示页面的方法 | |
CN116431672A (zh) | 数据库操作语句的谓词逻辑优化方法、存储介质与设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |