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

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

Info

Publication number
CN108170426A
CN108170426A CN201810036950.8A CN201810036950A CN108170426A CN 108170426 A CN108170426 A CN 108170426A CN 201810036950 A CN201810036950 A CN 201810036950A CN 108170426 A CN108170426 A CN 108170426A
Authority
CN
China
Prior art keywords
ontology
components
model
restful api
automatic generation
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.)
Granted
Application number
CN201810036950.8A
Other languages
English (en)
Other versions
CN108170426B (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

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查询语句一起传递给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前端需求。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

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互动方式,比如POST或GET。
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 true CN108170426A (zh) 2018-06-15
CN108170426B 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)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984728A (zh) * 2018-07-11 2018-12-11 北京奇艺世纪科技有限公司 一种代理类生成方法及装置
CN109144512A (zh) * 2018-08-22 2019-01-04 杭州数澜科技有限公司 一种生成api的方法和系统
CN109992249A (zh) * 2019-03-06 2019-07-09 北京国舜科技股份有限公司 一种流式数据流程操作方法及系统
CN111078169A (zh) * 2019-11-29 2020-04-28 武汉虹信技术服务有限责任公司 一种可视化大屏系统的前端装置及其搭建方法
CN111381820A (zh) * 2018-12-29 2020-07-07 北京数聚鑫云信息技术有限公司 一种基于gui自动生成api的方法及装置
CN113590097A (zh) * 2021-07-30 2021-11-02 中电金信软件有限公司 一种api接口的生成方法、装置、电子设备及存储介质
CN114089967A (zh) * 2022-01-19 2022-02-25 武汉源启科技股份有限公司 Api接口的生成方法和装置
WO2022048676A1 (zh) * 2020-09-07 2022-03-10 华为云计算技术有限公司 一种生成api的方法及装置

Citations (5)

* 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应用的自适应方法
US20150295983A1 (en) * 2014-04-09 2015-10-15 International Business Machines Corporation Generation of representational state transfer interface from application programming interfaces
CN105278946A (zh) * 2015-06-12 2016-01-27 浙江大学 一种RESTful API可视化方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707949A (zh) * 2012-04-26 2012-10-03 清华大学 一种基于本体的可视化概念建模方法
US20150295983A1 (en) * 2014-04-09 2015-10-15 International Business Machines Corporation Generation of representational state transfer interface from application programming interfaces
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
孙祖汉: "基于OKApi可视化RESTful服务组合建模研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
程方 等: "一种基于语义的RESTful Web服务匹配模型", 《重庆邮电大学学报(自然科学版)》 *
郑杰: "AngularJS前端框架与后端代码自动生成系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984728A (zh) * 2018-07-11 2018-12-11 北京奇艺世纪科技有限公司 一种代理类生成方法及装置
CN109144512A (zh) * 2018-08-22 2019-01-04 杭州数澜科技有限公司 一种生成api的方法和系统
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 北京国舜科技股份有限公司 一种流式数据流程操作方法及系统
CN111078169A (zh) * 2019-11-29 2020-04-28 武汉虹信技术服务有限责任公司 一种可视化大屏系统的前端装置及其搭建方法
CN111078169B (zh) * 2019-11-29 2023-09-26 武汉虹信技术服务有限责任公司 一种可视化大屏系统的前端装置及其搭建方法
WO2022048676A1 (zh) * 2020-09-07 2022-03-10 华为云计算技术有限公司 一种生成api的方法及装置
CN113590097A (zh) * 2021-07-30 2021-11-02 中电金信软件有限公司 一种api接口的生成方法、装置、电子设备及存储介质
CN114089967A (zh) * 2022-01-19 2022-02-25 武汉源启科技股份有限公司 Api接口的生成方法和装置

Also Published As

Publication number Publication date
CN108170426B (zh) 2020-06-05

Similar Documents

Publication Publication Date Title
CN108170426A (zh) 一种基于本体的RESTful API代码自动生成方法
CN106648690A (zh) 一种代码自动生成方法及装置
TWI588816B (zh) 一種語言交互方法
He et al. A metamodel for the notation of graphical modeling languages
CN104636393A (zh) 基于用户自定义行为分析的自适应报表的构建方法
WO2018113096A1 (zh) 一种食谱程序代码生成方法及食谱编译云平台系统
CN111008309B (zh) 查询方法及装置
EP2419840A1 (de) Verfahren und vorrichtung zum generieren einer rdf-datenbank für eine rdf-datenbankabfrage, sowie ein suchverfahren und eine suchvorrichtung zur rdf-datenbankabfrage
CN108829653A (zh) 一种报表的生成方法、装置、设备及介质
CN109656951A (zh) 基于表达式查询数据的方法及查询系统
CN110990011A (zh) 一种自动化接口的数据请求方法
CN111159384B (zh) 基于规则的句子生成方法和装置
CN114255750A (zh) 数据集构建和任务式对话方法、电子设备和存储介质
CN109033447B (zh) 一种人脸识别数据可视化系统
US10649739B2 (en) Facilitating application development
CN110795550A (zh) 一种提高闲聊对话系统回答丰富性的方法
KR102600752B1 (ko) 소스코드 분석을 이용한 텍스트 의미 분석 장치, 시스템 및 방법, 그리고, 이를 이용한 챗봇 질의응답 서비스 제공 방법
US20170372635A1 (en) Learning system of chinese graphic characters and information processing method of operating the same
Graube et al. Modeling and Transformation of systems of systems using Linked Data
Barashev Translating semantic networks to UML class diagrams
Gokcen et al. Madly ambiguous: A game for learning about structural ambiguity and why it’s hard for computers
Weigelt et al. How to Prepare an API for Programming in Natural Language.
Segura et al. Twiagle: a tool for engineering applications based on instant messaging over twitter
Atkins Prescription or Description: Some observations on the conceptual modelling process
CN117149177A (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