CN116521155B - 基于JSON描述动态生成Restful接口的方法 - Google Patents

基于JSON描述动态生成Restful接口的方法 Download PDF

Info

Publication number
CN116521155B
CN116521155B CN202310813605.1A CN202310813605A CN116521155B CN 116521155 B CN116521155 B CN 116521155B CN 202310813605 A CN202310813605 A CN 202310813605A CN 116521155 B CN116521155 B CN 116521155B
Authority
CN
China
Prior art keywords
capability
interface
description
json
restful interface
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
CN202310813605.1A
Other languages
English (en)
Other versions
CN116521155A (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.)
Zhongbo Information Technology Research Institute Co ltd
Original Assignee
Zhongbo Information Technology Research Institute Co ltd
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 Zhongbo Information Technology Research Institute Co ltd filed Critical Zhongbo Information Technology Research Institute Co ltd
Priority to CN202310813605.1A priority Critical patent/CN116521155B/zh
Publication of CN116521155A publication Critical patent/CN116521155A/zh
Application granted granted Critical
Publication of CN116521155B publication Critical patent/CN116521155B/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/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及数据交互接口技术领域,尤其涉及一种基于JSON描述动态生成Restful接口的方法,首先定义一组能力描述原子组件模式规范;然后构建符合模式规范的JSON格式能力接口描述符;接着能力语义解释引擎对能力接口描述符进行编译,生成能力执行引擎能够识别的语义描述符;能力执行引擎基于语义描述符发布一个Restful接口,并将语义描述与该Restful接口进行关联;最后Restful接口接收到外部请求,能力执行引擎按照语义执行,并将执行结果作为Restful接口的返回值。本发明支持在线修改实时生效,大大缩短接口发布的周期,实现快速响应业务需求的变化。

Description

基于JSON描述动态生成Restful接口的方法
技术领域
本发明涉及数据交互接口技术领域,尤其涉及一种基于JSON描述动态生成Restful接口的方法。
背景技术
Restful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。Restful适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
在信息化时代的大背景下,信息化系统越来越多,各个系统独立建设,形成信息孤岛,然而新的业务需求快速变化,各个系统之间数据交互成为一个必然的需求,开放性强的Restful接口形式对接成为首选。另一方面,新的业务新的需求,对旧系统的已有接口提出新的需求,旧系统已进入维护期,难以进行编码改造开发,因此需要一种免编码的方式实现对接口的转换和整合。同时,需求的快速迭代,对接口能力上线更新也需要快速迭代。传统的程序员编写代码开发接口,再经过测试、发布等多个过程,已不能及时满足实际业务快速迭代的需要。已有接口微改造困难、传统接口编码开发发布周期长、存在需求快速变化对接口发布迭代的实时性需求等问题。
因此,迫切需要一种基于能力描述的形式来表达接口的能力,通过对现有接口的参数改造、协议转换、接口合并、条件执行、并发执行等方式来组装成一个新的接口以满足新的业务场景需求,并实时发布成新的Restful接口对外提供能力。
发明内容
本发明提供了基于JSON描述动态生成Restful接口的方法,无需任何改造,也免去开发人员编码发布的过程。同时,支持可以在线修改实时生效,大大缩短接口发布的周期,实现快速响应业务需求的变化。
为了实现本发明的目的,所采用的技术方案是:基于JSON描述动态生成Restful接口的方法,方法包括如下步骤:
S1、定义一组能力描述原子组件模式规范;
针对实际业务中常用的能力逻辑过程,定义出能力描述原子组件描述符,以实现参数改造、协议转换、接口合并、条件执行、并发执行等逻辑能力,原子组件模式规范定义内容包括多路分发、分发汇聚、条件选择、选择闭合、Restful接口、WebService接口、JMS接口、参数转换和响应封装等组件的模式规范具体的定义说明。
S2、构建符合模式规范的JSON格式能力接口描述符;
根据业务需求,按照能力描述原子组件模式规范,生成对应的JSON格式字符串来描述要生成Restful接口的具体逻辑功能,生成JSON字符串的方式不限,可以是开发人员编写代码生成也可以是低代码平台方式的在线页面编辑生成。
S3:能力语义解释引擎对能力接口描述符进行编译,生成能力执行引擎能够识别的语义描述符;
能力语义解释引擎接收到能力接口描述JSON字符串后,先检查语法是否正确,是否符合定义的模式规范。语法校验通过后,进行语义翻译,生成语义描述符,并调用能力执行引擎,将语义描述符传入。
S4:能力执行引擎基于语义描述符发布一个Restful接口,并将步骤S3的语义描述符与该Restful接口进行关联;
能力执行引擎接收到语义描述后,根据内容动态生成并发布一个Restful接口。同时,根据语义描述动态生成系统的可执行代码块,并在执行引擎中注册发布Restful接口和代码块的关联关系。
S5、Restful接口接收到外部请求,能力执行引擎按照语义执行,并将执行结果作为Restful接口的返回值。
成功发布Restful接口后即对外提供接口能力。当发布的Restful接收到外部请求后,由能力执行引擎根据注册信息,找到关联的代码块进行执行,并将执行结果作为接口的返回值返回给调用方。
作为本发明的优化方案,原子组件模式规范定义内容包括多路分发、分发汇聚、条件选择、选择闭合、Restful接口、WebService接口、JMS接口、参数转换和响应封装。
作为本发明的优化方案,在步骤S1中,原子组件模式规范描述形式为JSON格式描述、XML格式描述、Word文字描述和MarkDown格式描述中的一种或几种。
作为本发明的优化方案,在步骤S2中,构建符合模式规范的JSON格式能力接口描述符编辑器为AntV-X6编辑引擎、文本框编写编辑器和Java代码编写编辑器中的一种或几种。
作为本发明的优化方案,在步骤S3中,能力语义解释引擎接收到能力接口描述JSON字符串后,先检查语法是否正确,是否符合定义的原子组件模式规范,语法校验通过后进行语义翻译,生成语义描述符。
作为本发明的优化方案,在步骤S3中,生成能力执行引擎能够识别的语义描述符的格式为JSON格式、XML格式、Groovy格式、JavaScript格式和Binary二进制中的一种或几种。
作为本发明的优化方案,在步骤S4中,能力执行引擎按照语义描述符,进行逐步解释和执行,通过对能力描述原子组件解释,生成一套完整的可执行代码块,并在能力执行引擎中注册待发布的Restful接口和可执行代码块的关联关系。
作为本发明的优化方案,在步骤S5,当发布的Restful接口接收到外部请求后,由能力执行引擎根据注册信息,找到关联的代码块进行执行,并将执行结果作为Restful接口的返回值返回给调用方。
本发明具有积极的效果:1)本发明使用简单通俗的JSON描述语言即可动态生成一个Restful接口,将需要开发人员编码才能实现的业务逻辑,直接通过JSON描述即可实现。提供了一种全新的接口开发方法,对旧系统零侵入,免去传统接口开发到发布的等待周期,实现快速响应业务需求的变化,有助于推动业务的快速迭代,提供生产效率;
2)本发明提供对旧接口的微改造,支持参数改造、协议转换、接口合并、条件执行、并发执行等模式,支持在线修改实时发布,能够根据业务需求快速生成一个Restful接口,有利于快速响应也需求的变化,以及重复利用已有接口。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图,其中:
图1是本发明的流程示意图;
图2是本发明实施例的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合具体实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,基于JSON描述动态生成Restful接口的方法,方法包括如下步骤:
S1、定义一组能力描述原子组件模式规范;
针对实际业务中常用的能力逻辑过程,定义出能力描述原子组件描述符,以实现参数改造、协议转换、接口合并、条件执行、并发执行等逻辑能力,具体包括多路分发、分发汇聚、条件选择、选择闭合、Restful接口、WebService接口、JMS接口、参数转换、响应封装等组件模式规范。
S2、构建符合模式规范的JSON格式能力接口描述符;
根据业务需求,按照能力描述原子组件模式规范,生成对应的JSON格式字符串来描述要生成Restful接口的具体逻辑功能,生成JSON字符串的方式不限,可以是开发人员编写代码生成也可以是低代码平台方式的在线页面编辑生成。
S3:能力语义解释引擎对能力接口描述符进行编译,生成能力执行引擎能够识别的语义描述符;
能力语义解释引擎接收到能力接口描述JSON字符串后,先检查语法是否正确,是否符合定义的模式规范。语法校验通过后,进行语义翻译,生成语义描述符,并调用能力执行引擎,将语义描述符传入。
S4:能力执行引擎基于语义描述符发布一个Restful接口,并将步骤S3的语义描述与该Restful接口进行关联;
能力执行引擎接收到语义描述后,根据内容动态生成并发布一个Restful接口。同时,根据语义描述动态生成系统的可执行代码块,并在执行引擎中注册发布Restful接口和代码块的关联关系。发布Restful接口可以是但不限于基于SpringBoot项目、基于SpringMVC项目、DotNet项目、PHP项目、Python项目。
S5、Restful接口接收到外部请求,能力执行引擎按照语义执行,并将执行结果作为Restful接口的返回值。
成功发布Restful接口后即对外提供接口能力。当发布的Restful接收到外部请求后,由能力执行引擎根据注册信息,找到关联的代码块进行执行,并将执行结果作为接口的返回值返回给调用方。
如图2所示,为基于JSON描述动态生成Restful接口的方法的具体实施例,包括如下步骤:
步骤100、新建前后端分离的Web项目;
采用C/S架构形式,接口编写和发布通过Web页面进行操作,通过页面端的在线编辑、实时修改和发布。新建一个Web项目,前端使用基于NodeJs的VUE框架,后端采用主流的SpringBoot框架,前端交互使用Ajax技术。
步骤200:引入AntV-X6可视化图编辑引擎作为JSON格式能力接口描述符的编辑器;
为了能够友好的实现能力接口描述符的编写,本实施例引入AntV-X6图编辑引擎。AntV-X6(以下简称X6)作为一款优秀的可视化图编辑引擎,常规交互和设计能快速创建画布、节点和边,开箱即用,非常方便,同时还有丰富的定制能力给到开发者。
在步骤100新建的VUE项目中,使用NodeJs的包依赖管理package.json引入开源的X6可视化图编辑引擎的依赖,以此作为能力接口描述模型可视化的编辑工具。
步骤300:基于原子组件模式规范,将能力描述原子组件开发成AntV-X6编辑器中组件工具箱的一个个节点组件;
按照定义的能力描述原子组件描述,将一个个原子组件定制开发出对应的独立的VUE组件,配置到X6的可视化图编辑引擎页面的组件工具箱中,以X6引擎节点的形式展现在编辑器中。
步骤400:通过页面可视化实现能力接口的定义,并生成JSON格式能力接口描述符;
能力接口发布者通过在可视化图编辑器引擎中选择节点即能力描述原子组件,通过连接节点来表达业务逻辑的先后顺序,以及线上条件判断作为分支依据。通过选中节点,配置对应节点所需的参数信息来表达能力描述原子组件的参数,最后通过页面上的保存按钮将编辑的图信息转换为能力接口描述JSON字符串。使用Ajax请求方式将JSON格式的能力接口描述符提交到后端Controller控制器。
步骤500:能力语义解释引擎进行编译,生成语义描述符;
本实施例后端采用SpringBoot框架,开发Controller控制器来接收前端提交的JSON格式能力接口描述符,Controller控制器接收到能力接口描述符后将数据交给能力语义解释引擎进行语法检查,确认符合能力描述原子组件模式规范标准,检查通过后进行编译处理,生成语义描述符,并将生成的结果交付能力执行引擎进行处理。
步骤600:能力执行引擎通过CGLib动态代理技术,按照语义描述生成可执行代码块;
能力执行引擎在接收到语义描述符后,开始进行逐步解释和执行,通过对原子组件的解析,采用CGLib动态代理技术,生成一套完整的可执行代码块,包括的多路分发执行、条件选择判断、Restful接口调用、WebService接口调用、JMS接口调用、参数处理转换以及执行结果封装等具体执行的代码。
步骤700:基于Spring动态注册能力发布Restful接口。
本实施例采用SpringBoot框架作为后端开发框架,基于Spring的RequestMappingHandlerMapping机制,使用动态注册能力将该接口动态生成的方法发布为Restful接口并对外提供服务。
步骤800:接收接口调用,执行可执行代码块,返回结果;
当发布的Restful接口被调用时,SpringBoot服务会将请求交给步骤700中发布的Restful接口,能力执行引擎执行步骤600中生成的可行性代码块,实现业务逻辑的处理并获得返回值,然后,将可执行代码的返回值作为Restful接口的返回结果返回给调用者。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

Claims (7)

1.基于JSON描述动态生成Restful接口的方法,其特征在于:所述方法包括如下步骤:
S1、定义一组能力描述原子组件模式规范,所述的能力描述原子组件模式规范包括多路分发、分发汇聚、条件选择、选择闭合、Restful接口、WebService接口、JMS接口、参数转换和响应封装;
S2、构建符合模式规范的JSON格式能力接口描述符,按照能力描述原子组件模式规范,生成对应的JSON格式字符串来描述要生成Restful接口的具体逻辑功能得到JSON格式能力接口描述符;
S3、能力语义解释引擎对能力接口描述符进行编译,生成能力执行引擎能够识别的语义描述符;
S4、能力执行引擎基于语义描述符发布一个Restful接口,并将步骤S3的语义描述符与该Restful接口进行关联;
S5、Restful接口接收到外部请求,能力执行引擎按照语义执行,并将执行结果作为Restful接口的返回值。
2.根据权利要求1所述的基于JSON描述动态生成Restful接口的方法,其特征在于:在步骤S1中,原子组件模式规范描述形式为JSON格式描述、XML格式描述、Word文字描述和MarkDown格式描述中的一种或几种。
3.根据权利要求1所述的基于JSON描述动态生成Restful接口的方法,其特征在于:在步骤S2中,构建符合模式规范的JSON格式能力接口描述符编辑器为AntV-X6编辑引擎、文本框编写编辑器和Java代码编写编辑器中的一种或几种。
4.根据权利要求1所述的基于JSON描述动态生成Restful接口的方法,其特征在于:在步骤S3中,能力语义解释引擎接收到能力接口描述JSON字符串后,先检查语法是否正确,是否符合定义的原子组件模式规范,语法校验通过后进行语义翻译,生成语义描述符。
5.根据权利要求1所述的基于JSON描述动态生成Restful接口的方法,其特征在于:在步骤S3中,生成能力执行引擎能够识别的语义描述符的格式为JSON格式、XML格式、Groovy格式、JavaScript格式和Binary二进制中的一种或几种。
6.根据权利要求1所述的基于JSON描述动态生成Restful接口的方法,其特征在于:在步骤S4中,能力执行引擎按照语义描述符,进行逐步解释和执行,通过对能力描述原子组件解释,生成一套完整的可执行代码块,并在能力执行引擎中注册待发布的Restful接口和可执行代码块的关联关系。
7.根据权利要求1所述的基于JSON描述动态生成Restful接口的方法,其特征在于:在步骤S5,当发布的Restful接口接收到外部请求后,由能力执行引擎根据注册信息,找到关联的代码块进行执行,并将执行结果作为Restful接口的返回值返回给调用方。
CN202310813605.1A 2023-07-05 2023-07-05 基于JSON描述动态生成Restful接口的方法 Active CN116521155B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310813605.1A CN116521155B (zh) 2023-07-05 2023-07-05 基于JSON描述动态生成Restful接口的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310813605.1A CN116521155B (zh) 2023-07-05 2023-07-05 基于JSON描述动态生成Restful接口的方法

Publications (2)

Publication Number Publication Date
CN116521155A CN116521155A (zh) 2023-08-01
CN116521155B true CN116521155B (zh) 2023-09-19

Family

ID=87403338

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310813605.1A Active CN116521155B (zh) 2023-07-05 2023-07-05 基于JSON描述动态生成Restful接口的方法

Country Status (1)

Country Link
CN (1) CN116521155B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1816562A1 (en) * 2006-02-03 2007-08-08 Research In Motion Limited System and method for extending a component-based application platform with custom services
CN114138238A (zh) * 2021-11-24 2022-03-04 中南民族大学 一种基于形式化语义的bpmn2.0执行引擎
CN114489597A (zh) * 2022-01-17 2022-05-13 徐工汉云技术股份有限公司 一种代码自动生成方法及装置
CN115905740A (zh) * 2022-12-15 2023-04-04 中电万维信息技术有限责任公司 一种多数据源服务引擎接口互联方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1816562A1 (en) * 2006-02-03 2007-08-08 Research In Motion Limited System and method for extending a component-based application platform with custom services
CN114138238A (zh) * 2021-11-24 2022-03-04 中南民族大学 一种基于形式化语义的bpmn2.0执行引擎
CN114489597A (zh) * 2022-01-17 2022-05-13 徐工汉云技术股份有限公司 一种代码自动生成方法及装置
CN115905740A (zh) * 2022-12-15 2023-04-04 中电万维信息技术有限责任公司 一种多数据源服务引擎接口互联方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"S5-066034 Feasibility Study for XML-based IRP SS".3GPP tsg_sa\WG5_TM.2006, *
"S5-066034 Feasibility Study for XML-based IRP SS".3GPP tsg_sa\WG5_TM.2006,全文. *
严亚兰.中国优秀博硕士学位论文全文数据库 (博士).(05),全文. *
严亚兰.中国优秀博硕士学位论文全文数据库 (博士).(第05期), *

Also Published As

Publication number Publication date
CN116521155A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
CN110196719B (zh) 一种基于自然语言处理的业务规则生成方法与系统
US10678522B1 (en) Compiler and method for compiling business rules for a serverless runtime environment
CN101777004B (zh) 面向服务环境中基于模板实现bpel子流程复用的方法及系统
CN101826987B (zh) 一种基于融合开放网络的混合服务支撑系统及方法
US8024196B1 (en) Techniques for creating and translating voice applications
US9959098B1 (en) Data processing systems and methods
CN106648662B (zh) 基于工程造价计算描述语言bcl的报表生成装置及生成方法
CN110633076B (zh) 一种自动生成Solidity智能合约Java客户端程序的方法
CN115639980A (zh) 一种低代码平台可拖拽的前端逻辑编排方法及装置
CN113031932B (zh) 项目开发方法、装置、电子设备及存储介质
WO2023065629A1 (zh) 一种对话管理方法、系统、终端及存储介质
CN101185116A (zh) 在软件程序中使用强数据类型表示语音识别语法
CN110244941A (zh) 任务开发方法、装置、电子设备及计算机可读存储介质
CN101640694A (zh) 生成简单对象访问协议消息的方法及流程引擎
CN116185373A (zh) 基于静态代码分析的微服务基础设施生成方法
CN115202668A (zh) 一种面向服务编排的基于ast生成工作流服务的方法
Ponge Vert. x in action: Asynchronous and reactive java
CN102707934B (zh) 一种以脚本形式表示增值业务流程的实现方法和系统
Schönberger et al. Algorithmic support for model transformation in object‐oriented software development
CN114064685A (zh) 数据标准化访问方法及其装置、设备、介质、产品
CN116521155B (zh) 基于JSON描述动态生成Restful接口的方法
CN117234529A (zh) 一种基于dsl解析资源生成api的方法
CN112487170B (zh) 面向场景配置的人机交互对话机器人系统
CN115033212A (zh) 航电系统图元模型一体化构建方法、装置、计算机设备
CN111913695A (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