CN108170426B - 一种基于本体的RESTful API代码自动生成方法 - Google Patents

一种基于本体的RESTful API代码自动生成方法 Download PDF

Info

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
Application number
CN201810036950.8A
Other languages
English (en)
Other versions
CN108170426A (zh
Inventor
李劲松
周雪峰
田雨
周天舒
王昱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201810036950.8A priority Critical patent/CN108170426B/zh
Publication of CN108170426A publication Critical patent/CN108170426A/zh
Application granted granted Critical
Publication of CN108170426B publication Critical patent/CN108170426B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation 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 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代码模版。
CN201810036950.8A 2018-01-15 2018-01-15 一种基于本体的RESTful API代码自动生成方法 Active CN108170426B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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